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