举报

wchar_t类型特殊字符比较失败问题

0
#include <string>
using namespace std;
 
int main()
{
    wstring str;
    str = L"ā是拼音";
 
    if(str[0] == 'ā')
        printf("true");
    else
        printf("false");
 
    return 0;
}

上述代码的输出是false,我本以为会是true的。

但是把代码改成这样:

#include <string>
using namespace std;
 
int main()
{
    wstring str;
    str = L"ā是拼音";
 
    wstring c1,c2;
    c1 = str[0];
    c2 = L"ā";
 
    if(c1 == c2)
        printf("true");
    else
        printf("false");
 
    return 0;
}

输出的就是true了。

这是为什么呢?

ava
huidong

2020-11-15

举报
0

问题出在这里:

	if (str[0] == 'ā')

str[0] 是 wchar_t 字符,'ā' 是 char 字符,值不相等,所以结果 false。 

程序中全部都用 wchar_t 字符,可以避免此类问题。这么修改就好了:

	if (str[0] == L'ā')
ava
慢羊羊

2020-11-15

他没报类型不相等的错误,我以为这样写就是wchar_t了呢,原来如此! -  huidong  2020-11-15
举报
技术讨论社区