#include<iostream>
//#include <string>
using std::istream;
istream& func(istream& is)
{
std::string buf;
while(is>>buf) std::cout<<buf<<std::endl; //>>提示没有与这些操作数匹配的运算符
is.clear();
return is;
}
int main()
{
istream& is=func(std::cin);
std::cout<<is.rdstate()<<std::endl; //这里的<<就是正确的
return 0;
//std::cout<<"Hello world";
}
最后解决,少了头文件#include <string>
错误原因是因为std::string buf;
用到了string,所以必须要把对应的头文件包含进来
std::string buf;这句话之所以没包含头文件也没有报错,是因为string可以通过std::查找到