c++中wchar转char
Posted
技术标签:
【中文标题】c++中wchar转char【英文标题】:wchar to char in c++ 【发布时间】:2010-05-24 13:07:57 【问题描述】:我有一个 Windows CE 控制台应用程序,其入口点如下所示
int _tmain(int argc, _TCHAR* argv[])
我想检查argv[1]
的内容,将"-s"
转换为整数argv[2]
。我无法缩小论点或访问它们进行测试。
我最初尝试了以下但收效甚微
if (argv[1] == L"-s")
我还尝试在每个字符上使用wostringstream
的narrow
函数,但这会使应用程序崩溃。
谁能解释一下? 谢谢
【问题讨论】:
【参考方案1】:应该是:
if (_tcscmp(argv[1], _T("-s")) == 0)
【讨论】:
我认为wcscmp
是首选
我改成_tcscmp
,最灵活。【参考方案2】:
if (argv[1] == L"-s")
当您比较指针时,即使对于窄字符串,这也是不正确的。你需要
if(wcscmp(argv[1],L"-s")==0)
或
if(std::wstring(argv[1])==L"-s")
【讨论】:
【参考方案3】:argv
是 char*
的数组,而不是 string
,因此通常与 == 的比较不起作用。该 if 语句正在比较两个指针。你能构造一个wstring
然后比较吗?
if (wstring(argv[1]) == L"-s")
【讨论】:
【参考方案4】:您可能需要将 argv[] 条目转换为字符串,然后进行比较。 [链接文字][1]
http://www.codeproject.com/Tips/81778/Converting-TCHAR-to-string-while-getting-PC-Name.aspx
[1]:
如果您可以转换为字符串,上述链接会有所帮助。
【讨论】:
以上是关于c++中wchar转char的主要内容,如果未能解决你的问题,请参考以下文章