Я создал проект на 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.
Может кто-нибудь помочь?
Большое спасибо!
Самый простой способ для аргументов командной строки — выбрать, хотите ли вы, чтобы они поддерживали широкие строки или нет. Если нет, то это легко:
int main(int argc, char *argv[])
Если вы хотите их, однако, все становится немного сложнее, но не намного. MSVC имеет некоторые _wmain
или любой другой вариант, но он нестандартный. Я предпочитаю стандартные основные подписи. Вы можете сделать это:
int main() {
PWSTR cmdLine = GetCommandLineW();
int argc;
PWSTR *argv = CommandLineToArgvW(cmdLine, &argc);
}
Целый TCHAR
беспорядок довольно раздражает иметь дело с. Лучше просто использовать широкие строки, если вы хотите широкую поддержку строк, и использовать узкие строки, если вы этого не делаете. При работе с другими функциями Windows API я настоятельно рекомендую, чтобы все входящее и выходящее из них было широкой строкой.
Других решений пока нет …