我试图比较这两个字符,但是在赢得32 Visual Studio 2008时:

if(mychar1 ==  'ä'  || mychar2 == 'Ä')


色情:

调试断言失败!

文件:f \ dd \ vctools \ crt_bld \ self_x86 \ crt \ src \ xstring
1575行

表达式:字符串下标超出范围

最佳答案

适用于我的机器:

#include <iostream>

int main()
{
    char mychar1, mychar2;
    std::cin >> mychar1 >> mychar2;
    if(!std::cin)
        return 2;
    if(mychar1 ==  'ä' || mychar2 == 'Ä' )
       return 1;
    std::cout << "No!\n";
    return 0;
}


请注意,引用的错误(“字符串下标超出范围”)表示您尝试访问无效索引处的字符串中的字符。类似于my_str.at(10)(或在Debug构建中为my_str[10]),其中my_str仅包含10个字符。由于您显示的代码无法访问字符串中的字符,因此错误出在您未显示的代码中。

编辑:您在问题注释中显示的代码确实使用operator[]()访问字符串中的字符。当您执行string2[0]时,是否检查了字符串是否为空?

关于c++ - 这是怎么回事,您不能在C++中比较if(mychar1 =='ä'|| mychar2 =='Ä')吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2499122/

10-11 16:03