您的位置:首页 > 编程语言 > C语言/C++

C++ primer 习题8-3 15 16

2014-03-04 16:25 721 查看
加深和熟练对输入输出流的运用。。。

#include<iostream>
using namespace std;
istream&get(istream &in)
{
int val;
cout<<"输入:";
while(in>>val,!in.eof())
{
if(in.bad())throw("eroor。。");
if(in.fail())
{
cerr<<"Try again!!!"<<endl;
in.clear();
in.setstate(istream::eofbit);//这句为什么不可以呢??
//            in.ignore(1,' ');
continue;
}
cout<<val<<endl;
}
in.clear();
return in;
}
int main()
{
get(cin);
int vall;
cin>>vall;
cout<<"vall="<<vall<<endl;
return 0;
}


疑问:返回的in应该正常,为什么main函数中的cin不能输入呢???

8-15

#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
istream&get(istringstream &in,string &w)
{
//	istringstream val;
in.str(w);//这句很关键
string val;
cout<<"输入:";
while(in>>val,!in.eof())
{
if(in.bad())throw("eroor。。");
if(in.fail())
{
cerr<<"Try again!!!"<<endl;
in.clear();
//			in.setstate(istream::eofbit);//这句为什么不可以呢??
in.ignore(1,' ');
continue;
}
cout<<val<<endl;
}
in.clear();
return in;
}
int main()
{
istringstream sin;
string w="wo men dou shi hao hai zi";
get(sin,w);
int vall;
cin>>vall;
cout<<"vall="<<vall<<endl;
return 0;
}

8-16

#include<iostream>
#include<vector>
#include<sstream>
#include<fstream>
#include<cstdlib>
using namespace std;
int main()
{
ifstream fin;
fin.open("source.cpp");
if(!fin){cerr<<"Open error..."<<endl;exit(1);}
string line;
vector<string> vec;
while(!fin.eof())
{
getline(fin,line);
vec.push_back(line);
}
vector<string>::iterator iter=vec.begin();
string word;
while(iter!=vec.end())
{
istringstream sin(*iter);
while(sin>>word)
cout<<word<<endl;
// while(!sin.eof()){sin>>word;cout<<word<<endl;}
++iter;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: