5


3

win32アプリケーションのコマンドライン引数からstd :: stringを取得する方法は?

だから今、私は持っています

int main(int argc、char * argv []){}

文字列ベースにする方法は? `int main(int argc、std

string * argv [])`で十分ですか?

6 Answer


26


mainの署名は変更できないため、これが最善の策です。

#include
#include

int main(int argc, char* argv[])
{
    std::vector params(argv, argv+argc);
    // ...
    return 0;
}


4


渡された入力パラメーターから文字列を作成する場合は、文字ポインターを追加して文字列を作成することもできます

#include
#include
using namespace std;

int main(int argc, char* argv[])
{

string passedValue;
for(int i = 1; i < argc; i++)
 passedValue += argv[i];
    // ...
    return 0;
}


3


main関数はエントリポイントとして明示的に宣言されているため、そのようにすることはできません。 CRTはSTLについて何も知らないため、とにかくbarfを知っていることに注意してください。 Try:

#include
#include

int main(int argc, char* argv[])
{
    std::vector args;
    for(int i(0); i < argc; ++i)
        args.push_back(argv[i]);

    // ...

    return(0);
}; // eo main


3


`3.6.1`のStandardでは

_ _ 実装では、メイン関数を事前定義してはなりません。 この関数はオーバーロードされません。 戻り値の型はint *型ですが、それ以外の場合、その型は実装定義です。 すべての実装は、以下のmainの定義の両方を許可するものとします。

`int main(){/ * …​ * /} `

and

`int main(int argc、char * argv []){/ * …​ * /} ` _ _


2


No. それは許されません。 存在する場合、char * argv []であることが必須です。

ところで、C ++ mainでは、常に 'int’を返すように宣言する必要があります


2


mainはchar *を受け取ります。 argv配列を自分でstd

stringsに入れる必要があります。