C ++ _TCHAR * в std :: string

Я создал проект на 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.

Может кто-нибудь помочь?
Большое спасибо!

0

Решение

Самый простой способ для аргументов командной строки — выбрать, хотите ли вы, чтобы они поддерживали широкие строки или нет. Если нет, то это легко:

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

Если вы хотите их, однако, все становится немного сложнее, но не намного. MSVC имеет некоторые _wmain или любой другой вариант, но он нестандартный. Я предпочитаю стандартные основные подписи. Вы можете сделать это:

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

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

Целый TCHAR беспорядок довольно раздражает иметь дело с. Лучше просто использовать широкие строки, если вы хотите широкую поддержку строк, и использовать узкие строки, если вы этого не делаете. При работе с другими функциями Windows API я настоятельно рекомендую, чтобы все входящее и выходящее из них было широкой строкой.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]