这是我得到的:
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 风格转换或函数风格转换。
帮忙吗?
最佳答案
您不能切换不是常数整数值的值。但是由于参数匹配不是时间关键的,您可以放入几个 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);
TCHAR、_tcscmp
和 _T()
解释如下:
简而言之,您可以通过使用这些扩展为正确功能( _tcscmp->strcmp 或 wcscmp 或 mbccmp
) 取决于您正在构建的字符表示。
关于c++ - 如何在 Switch 语句中使用 Cmd 行参数中提供的 TCHAR*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453296/