C ++ - 使用atoi时的未处理异常()

时间:2011-03-26 15:16:50

标签: c++ exception atoi unhandled

当使用这段代码时,它会抛出一个未处理的写入异常,我几乎可以肯定这与atoi()函数有关。

while(true){
                    char* item = "";
                    cin >> item;
                    int numItem = atoi(item);
                    if(numItem){
                        if(numItem<=backpackSpaces){
                                equipItem(backpack[numItem]);
                                break;
                        }else{
                            cout << "No such item." << endl;
                        }
                    }else if(item == "back"){
                        cout << "Choose an option from the original choices. If you can't remember what they were, scroll up." << endl;
                        break;
                    }else{
                        cout << "Command not recognised." << endl;
                    }
}

1 个答案:

答案 0 :(得分:6)

使用:

char item[20];

char * item = ""使项目指向只读内存 - 您正在尝试修改它。字符串文字的指针更好地写为const char * item = "" - 然后编译器将确保您不修改它。 char * item = ""合法的原因是与C的向后兼容性。