【发布时间】:2013-02-05 04:22:43
【问题描述】:
案例 3 是向结构中添加书籍的选项。只要添加标题不带空格的书籍,它们就可以,每当我尝试输入一个包含空格的名称时,编译器就会发疯,有点像执行无限循环时会发生的事情。为什么以及解决方案是什么?
struct bookStruct
{
string bookTitle;
int bookPageN;
int bookReview;
float bookPrice;
};
const int MAX_BOOKS=10;
case 3:
{
for(int i=0;i<MAX_BOOKS;i++)
{
if(books[i].bookTitle=="\0")
{
cout << "\nPlease Enter the Title: ";
cin >> books[i].bookTitle ;
cout << "\nPlease Enter Total Number of Pages: ";
cin >> books[i].bookPageN ;
cout << "\nPlease Enter Rating (stars): ";
cin >> books[i].bookReview ;
cout << "\nPlease Enter Price: ";
cin >> books[i].bookPrice;
cout << "\n\nBook Added.\n\n";
break;
}
}break;
}
【问题讨论】:
-
您已经发布了 3 个关于您的代码的问题。你不认为你应该通过像谷歌这样的搜索或使用调试器来自己解决这些问题吗?
-
编译器不会做任何不寻常的事情。卡住的是编译器代表您创建的程序。
-
@Rapptz 我整天都在尝试,没有运气,也没有来自这里的有效答案。
-
如果您认为对您的问题给出的答案都不是有效的,或者更确切地说是“可接受的”,那么您不应将它们标记为已接受。
-
顺便说一下,与
"\0"比较有点多余,因为""包含一个'\0'字符,而前者包含两个。更好的是if (books[i].bookTitle.empty())。