我用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。
有人可以帮忙吗? 非常感谢你!
答案 0 :(得分:4)
命令行参数最简单的方法是选择是否要它们支持宽字符串。如果没有,那很简单:
int main(int argc, char *argv[])
但是,如果你想要它们,事情会变得更复杂,但不是那么多。 MSVC有一些_wmain
或任何变体,但它是非标准的。我更喜欢标准的主要签名。你可以这样做:
int main() {
PWSTR cmdLine = GetCommandLineW();
int argc;
PWSTR *argv = CommandLineToArgvW(cmdLine, &argc);
}
整个TCHAR
混乱非常烦人。如果你想要宽字符串支持,最好只使用宽字符串,如果不需要,则使用窄字符串。在处理其他Windows API函数时,我强烈建议进出的所有内容都是一个宽字符串。