C++ c+中的wchar到char+;

C++ c+中的wchar到char+;,c++,string,unicode,windows-ce,C++,String,Unicode,Windows Ce,我有一个Windows CE控制台应用程序,其入口点如下所示 int _tmain(int argc, _TCHAR* argv[]) 我想检查argv[1]的内容,查看“-s”是否将argv[2]转换为整数。我在缩小参数范围或访问它们进行测试时遇到困难 我最初尝试了以下方法,但收效甚微 if (argv[1] == L"-s") 我还尝试在每个字符上使用wostringstream的shorrow功能,但这使应用程序崩溃 有人能解释一下吗? 谢谢应该是: if (_tcscmp(argv[

我有一个Windows CE控制台应用程序,其入口点如下所示

int _tmain(int argc, _TCHAR* argv[])
我想检查
argv[1]
的内容,查看
“-s”
是否将
argv[2]
转换为整数。我在缩小参数范围或访问它们进行测试时遇到困难

我最初尝试了以下方法,但收效甚微

if (argv[1] == L"-s")
我还尝试在每个字符上使用
wostringstream
shorrow
功能,但这使应用程序崩溃

有人能解释一下吗? 谢谢

应该是:

if (_tcscmp(argv[1], _T("-s")) == 0)

argv
char*
的数组,而不是
string
,因此通常与==的比较不起作用。if语句正在比较两个指针。你能构造一个
wstring
然后进行比较吗

if (wstring(argv[1]) == L"-s")
在比较指针时,即使对于窄字符串,这也是不正确的。你需要

if(wcscmp(argv[1],L"-s")==0)


可能需要将argv[]项转换为字符串,然后进行比较。 [连结文字][1]

[1] :


如果你能转换成字符串,上面的链接会有帮助。

我认为
wcscmp
是首选。我把它改成
\u tcscmp
,这是最灵活的。
if(wcscmp(argv[1],L"-s")==0)
if(std::wstring(argv[1])==L"-s")