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循环中的任何内容,也不要感到惊讶。但实际上,你想用你的代码实现什么?莫尔斯电码是稳定的,没有理由每次从用户那里加载它,例如,它应该存储在预填充的数组中。