当两个字符串不同时,为什么wcscmp()返回True?

时间:2019-09-20 05:15:20

标签: c++

我正在使用wcscmp()比较两个unicode字符串。它们不同,但是wcscmp()返回true。我正在使用Visual Studio 2019。

details as screenshot

#include <iostream>

int main()
{        
    auto ddd = L"HP 24f Display";
    auto eee = L"122fff";
    bool gggg = wcscmp(ddd, eee);
    std::cout << "Hello World!\n";
}

2 个答案:

答案 0 :(得分:3)

wcscmp()函数返回一个整数值,而不是布尔值。如果两个字符串相等,则返回整数值0。如果两个字符串不相等,则返回非零值,该值指示第一个字符串是否小于或大于第二个字符串。

解决方案:

#include <iostream>

int main()
{
    auto ddd = L"122fff";
    auto eee = L"122fff";
    int gggg = wcscmp(ddd, eee);
    if (gggg != 0)
    {
        std::cout << " False" << std::endl;
    }
    else
    {
        std::cout << " True" << std::endl;
    }
    std::cout << "Hello World!\n";
}

答案 1 :(得分:1)

wcscmp返回int,而不是bool。输入后,它将返回负值。

将非零的int值转换为bool时,它变成true