io流

//此程序的结果:1.若传入的实参是ifstream或istringstream的对象,则无法输出最后一个单词,原因在于while语句的循环条件,用的是逗号语句,当最后一个词输入完毕,is这个对象里面已经空了,while循环的条件就不成立了,直接跳出循环
//将逗号改成或是可以的。2.若传入的是cin,则可以全部输出,不会多输出最后一个词一遍。但若将逗号改成或,则会IO操作失败。
istream& read_stream(istream& is)
{
string str;

while (is>>str,is.eof())//对于逗号运算符来说,首先对左侧的表达式求值,然后将求值结果丢弃掉。逗号运算符真正的结果是右侧表达式的值

{

if(is.bad())
{
throw runtime_error("IO流错误");
}
if (is.fail())
{
cerr<<"the data eror,please try again";
}

cout << str << endl;
}

is.clear();
return is;
}
int main(int argc,char* argv[])


{
ostringstream msg;
msg << "hello";
/*string s = "you are my sunshine";*/
//cout << msg.str() << endl;
istringstream ist(msg.str());
read_stream(cin);
system("pause");
return 0;
}




该程序的结果:1.若传入的实参是ifstream或istringstream的对象,则会输出所有的单词。
2.若传入的实参是标准输入cin这个对象,按下输入结束符后,会再输出一遍最后输入的那个单词。
istream& read_stream(istream& is)
{
   string str;
while (!is.eof())
{
is >> str;
cout << is.eof() << endl;
cout << str << endl;
}
is.clear();
return is;
}

int main()
{
/*ifstream fs("data.txt");
read_stream(fs);*/
read_stream(cin);
system("pause");
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值