#include <iostream>
#include<string>
#include<vector>
#include <assert.h>
#include<iostream>
using namespace std;
int main()
{
string sought = "x";
string s;
while(cin>>s&&s!=sought){}
assert(cin);
}
这个程序输入0为什么不会引起程序中断呢?
你这输入0相当于将字符串“0”赋值给s,cin还是true
只有数字0和false对while来说才是逻辑否, 你输入字符串"0" 甚至是空字符串""都不会被判断为否的。
#include <iostream>
#include<string>
#include<vector>
#include <assert.h>
#include<iostream>
using namespace std;
int main()
{
string sought = "x";
string s;
while ((cin >> s) && s.c_str() != "0" && s != sought ) {}
assert(cin);
}
改成这样输入0或者x都会终止程序了
如果对你有帮助,顺手点个采纳呗 。