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风格的转换或函数式转换.
救命?
您无法切换不是常量整数值的值.但由于参数的匹配时间要求不高,你可以把一对夫妇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根据字符表示扩展到正确的函数()你正在建设.
| 归档时间: |
|
| 查看次数: |
3740 次 |
| 最近记录: |