C++ 引发未处理的异常:写入访问冲突。这是0xCC07F4
我不确定为什么在运行代码时会出现此错误,我认为我犯的错误在这一部分:C++ 引发未处理的异常:写入访问冲突。这是0xCC07F4,c++,C++,我不确定为什么在运行代码时会出现此错误,我认为我犯的错误在这一部分: std::string morseCode[size]; void table(std::istream& inf) { char cha; std::string str; while (inf) { inf >> cha >> str; cha = tolower(cha); int i = cha - 'a';
std::string morseCode[size];
void table(std::istream& inf) {
char cha;
std::string str;
while (inf) {
inf >> cha >> str;
cha = tolower(cha);
int i = cha - 'a';
morseCode[i] = str;
}
}
我似乎在morseCode[I]=str这行上出错了 写访问冲突是指操作系统告诉您正在尝试访问不允许访问的内存。这很可能是因为您的输入文件包含ASCII值低于“a”的字符,这导致变量“i”低于0。如果你在用莫尔斯电码做事,你很可能会遇到数字,这符合这个描述
我不一定知道你想在这里完成什么,但是如果你想计算一个字符出现的次数,那么我同意其他人说的使用地图。大小的值是多少?很明显,可能是您的数组不够大,或者我有一个您没有预料到的值。输入文件的格式是什么?大写字母会把事情搞砸的。”假设ASCII为-32,则'-'A'为。把它放到[]中,坏事情就会发生。在我看来,你最好使用std::unordered\u map morseCode;。如果您这样做了,那么如果您的代码奇迹般地开始工作,而没有更改while循环中的任何内容,也不要感到惊讶。但实际上,你想用你的代码实现什么?莫尔斯电码是稳定的,没有理由每次从用户那里加载它,例如,它应该存储在预填充的数组中。