【问题标题】:wchar to char in c++c++中wchar转char
【发布时间】: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 函数,但这会使应用程序崩溃。

谁能解释一下? 谢谢

【问题讨论】:

    标签: c++ string unicode windows-ce


    【解决方案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]:

        如果您可以转换为字符串,上述链接会有所帮助。

        【讨论】:

          猜你喜欢
          • 2011-06-17
          • 2012-04-03
          • 2013-03-30
          • 2012-09-25
          • 1970-01-01
          • 2011-02-28
          • 2013-03-23
          • 2014-11-22
          • 2011-08-06
          相关资源
          最近更新 更多