如何在Switch语句中的Cmd Line Argument中使用TCHAR*?

the*_*tro 0 c++ windows mfc switch-statement

这是我得到的:

 switch(argv[0])
 {
  case "-test1":
   AfxBeginThread(method1, 0); break;
  case "-test2":
   AfxBeginThread(method2, 0); break;
  case "-test3":
   AfxBeginThread(method3, 0); break;
  default:
   AfxBeginThread(method1, 0); break;
 }
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows,因此参数作为TCHAR*进入数组.我需要做些什么来完成这项工作?

编辑:

所以我现在尝试做以下事情......

if(strcmp(argv[0], "-http") == 0)
    doStuff();
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误

错误C2664:'strcmp':无法将参数1从'TCHAR*'转换为'const char*'指向的类型不相关; 转换需要reinterpret_cast,C风格的转换或函数式转换.

救命?

Nor*_*ame 5

您无法切换不是常量整数值的值.但由于参数的匹配时间要求不高,你可以把一对夫妇if的和strcmp的来代替.

这个代码显然在Windows下运行,你最有可能被迫使用TCHAR,这意味着你需要_tcscmp()代替strcmp和好的旧_T()宏:

 if      (_tcscmp(_T("-test1"),argv[0])==0) AfxBeginThread(method1, 0);
 else if (_tcscmp(_T("-test2"),argv[0])==0) AfxBeginThread(method2, 0);
 else if (_tcscmp(_T("-test3"),argv[0])==0) AfxBeginThread(method3, 0);
 else AfxBeginThread(method1, 0);
Run Code Online (Sandbox Code Playgroud)

TCHAR, _tcscmp_T()的事情在这里解释:

简而言之,您可以使用这些宏从单个源构建各种字符表示(16位UCS-2,8位多字节等)的程序,_tcscmp->strcmp or wcscmp or mbccmp根据字符表示扩展到正确的函数()你正在建设.