我试图比较这两个字符,但是在赢得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/