assert中关于string类型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!=sought){}
    assert(cin);
}
这个程序输入0为什么不会引起程序中断呢?

你这输入0相当于将字符串“0”赋值给s,cin还是true

只有数字0false对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都会终止程序了

 

如果对你有帮助,顺手点个采纳呗 。