0

C++ でプロジェクトを作成し、VS2010 を作成しました

int _tmain(int argc, _TCHAR* argv[])
{

string sInput;
string sOutput;
int iMode=0;

if (argc==3)
{
    if (strcmp(argv[0], "-e")==0)
    {
        iMode = 1;
    } 
    else if (strcmp(argv[0], "-d")==0)
    {
        iMode =2;
    }
    sInput=argv[1];
    sOutput=argv[2];
}
}

ご覧のとおり、引数を文字列として扱いたいのですが、_TCHAR* から std::string に取得する方法がわかりません。

誰か助けてくれませんか?どうもありがとうございました!

4

1 に答える 1

4

コマンド ライン引数の最も簡単な方法は、ワイド文字列をサポートするかどうかを選択することです。そうでない場合は、簡単です。

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

ただし、それらが必要な場合は、少し複雑になりますが、それほど複雑ではありません。MSVC には何らかの_wmainバリアントがありますが、標準ではありません。私は標準的な主な署名を好みます。あなたはこれを行うことができます:

int main() {
    PWSTR cmdLine = GetCommandLineW();

    int argc;
    PWSTR *argv = CommandLineToArgvW(cmdLine, &argc);
}

全体のTCHAR混乱に対処するのはかなり面倒です。ワイド文字列のサポートが必要な場合はワイド文字列のみを使用し、そうでない場合はナロー文字列を使用することをお勧めします。他の Windows API 関数を扱うときは、それらに出入りするものはすべてワイド文字列にすることを強くお勧めします。

于 2013-05-23T06:24:32.310 に答える