c++ - 如何在 Switch 语句中使用 Cmd 行参数中提供的 TCHAR*?

标签 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;
 }

我使用的是 Windows,因此参数以 TCHAR* 的形式进入数组。我需要做什么才能完成这项工作?

编辑:

所以我现在正在尝试执行以下操作...

if(strcmp(argv[0], "-http") == 0)
    doStuff();

我遇到了以下编译错误

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

帮忙吗?

最佳答案

您不能切换不是常数整数值的值。但是由于参数匹配不是时间关键的,您可以放入几个 ifstrcmp 来代替。

此代码显然在 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);

TCHAR、_tcscmp_T() 解释如下:

简而言之,您可以通过使用这些扩展为正确功能( _tcscmp->strcmp 或 wcscmp 或 mbccmp) 取决于您正在构建的字符表示。

关于c++ - 如何在 Switch 语句中使用 Cmd 行参数中提供的 TCHAR*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453296/

相关文章:

c++ - MFC 应用程序 : launch a (modal) dialog from a form button

c++ - 使用 Visual C++ 和 MFC 发出 ping 声音错误

c++ - 快速排序 3 个值

c++ - 比较当前前景窗口句柄

python manage.py runserver、shell、dbshel​​l 在 git-bash 上卡住

windows - 如何在 Windows 环境中安装 Vim 插件

MFC 应用程序名称

c++ - 非常大的数组——C 数组与 C++ 数组。 Visual Studio - 超过最大值 (268435456)

c++ - 编译DLL时如何添加include

windows - 在已安装程序列表中显示发布者名称