【问题标题】:check if WCHAR contains string检查 WCHAR 是否包含字符串
【发布时间】:2012-06-30 09:52:24
【问题描述】:

我有变量WCHAR sDisplayName[1024];

如何检查sDisplayName 是否包含字符串“example”?

【问题讨论】:

    标签: c++ wchar


    【解决方案1】:
    if(wcscmp(sDisplayName, L"example") == 0)
        ; //then it contains "example"
    else
        ; //it does not
    

    这不包括sDisplayName中的字符串以“example”开头或中间有“example”的情况。对于这些情况,您可以使用wcsncmpwcsstr

    此检查也区分大小写。

    如果sDisplayName 包含垃圾,这也会中断 - i。 e.不是以 null 结尾的。

    考虑改用 std::wstring。这就是 C++ 的方式。

    编辑:如果你想匹配字符串的开头:

    if(wcsncmp(sDisplayName, L"Adobe", 5) == 0)
        //Starts with "Adobe"
    

    如果要查找中间的字符串

    if(wcsstr(sDisplayName, L"Adobe") != 0)
        //Contains "Adobe"
    

    请注意,如果找到字符串,wcsstr 将返回 非零,这与其他字符串不同。

    【讨论】:

    • 如果 (wcscmp(sDisplayName, L"Adobe") == 0) 当 sDisplayName = 0x0045e084 L"Adobe AIR" 时这不起作用
    【解决方案2】:

    您可以使用wchar_t variants of standard C functions(即wcsstr)。

    【讨论】:

      【解决方案3】:

      wscstr 将在 sDisplayName 的任何位置找到您的字符串,wsccmp 将查看 sDisplayName 是否正是您的字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-09
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        • 2013-11-20
        • 2015-01-04
        相关资源
        最近更新 更多