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];
}
}

如您所见,我想将 args 视为字符串,但我不确定如何从 _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 回答