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")

我还尝试在每个字符上使用wostringstreamnarrow 函数,但这会使应用程序崩溃。

谁能解释一下? 谢谢

【问题讨论】:

【参考方案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】:

argvchar* 的数组,而不是 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的主要内容,如果未能解决你的问题,请参考以下文章

C++中char和wchar_t转换

如何将char*转换为wchar

C++中怎么将WCHAR字符串转换成CHAR字符串?

C++中TCHR转string

在 C++ 中获取 `wchar_t*` 的长度

C++ WCHAR 操作