我是 C++ 的新手,我尝试搜索但不知道要搜索什么。对不起。我的问题是:
当我将 bool 条件设置为 false 时,它仍然需要我输入 2 x 来终止编译器。为什么会这样? (我试过用cin.fail()但是没用)
当我打印类(class)列表时,它列出了应该终止程序的类(class)(即当您按 x 时)。我该如何纠正这个问题? 感谢您的帮助。
int main(void) { // Gather list of courses and their codes from user, // storing data as a vector of strings const string DegreeCode("PHYS"); string CourseTitle; int CourseCode(0); vector <string> CourseList; vector <string> :: iterator iter; bool not_finished(true); do { if (CourseTitle == "x" && "X") { not_finished=false; } else { cout<<"Please enter a course code and a course title (or x to finish): "<<endl; cin>>CourseCode; cin.sync(); cin.clear(); getline(cin , CourseTitle); ostringstream oss; string outputCourseList (oss.str ()); oss << DegreeCode << " " << CourseCode << " "<< CourseTitle; CourseList.push_back (oss.str ()); cout <<outputCourseList <<endl; oss.str(""); //clear oss content } } while(not_finished); // Print out full list of courses cout<<"List of courses:\n"<<endl; for (iter = CourseList.begin(); iter != CourseList.end(); iter++) cout<<(*iter)<<endl; return 0; }
最佳答案
你的问题是你在if
语句中的比较:
if (CourseTitle == "x" && "X")
正确的语法是:(变量运算符变量)&&(变量运算符变量)
语法更正:
if ((CourseTitle == "x") && (CourseTitle == "X"))
存在一个逻辑问题,因为一个变量不能同时等于两个值。
也许你想要:
if ((CourseTitle == "x") || (CourseTitle == "X"))
这意味着一个OR表达式为真。
您可以通过将字符串转换为全部大写或全部小写来消除两次比较。在网络上搜索“C++ 字符串转换为从下到上”。
关于c++ - String 和 Bool(Int 条件为假)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21919399/