C++-atoi()を使用するときの未処理の例外
質問
このコードを使用すると、未処理の書き込み例外がスローされますが、これは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;
}
}
解決
使用:
char item[20];
char * item = ""
アイテムが読み取り専用メモリをポイントするようにします-あなたはそれを変更しようとしています。文字列リテラルへのポインタは、次のように書かれています const char * item = ""
-その後、コンパイラはあなたがそれを変更しないことを確認します。その理由は char * item = ""
cとの下位互換性は合法です。
所属していません StackOverflow