#include<iostream>#include<string>using namespace std;istream& func(istream& is){ int v; while (is >> v, !is.eof()) // 直到遇到文件结束符才停止读取 { if (is.bad()) { cerr << "Bad Error!\n"; break; } else if (is.fail()) { cerr << "Wrong Data! Please try again!\n"; is.clear(); is.ignore(1024, '\n'); continue; } cout << v << endl; } is.clear(); return is;}int main(){ func(cin); return 0;}
#include<iostream>
#include<string>
using namespace std;
istream& func(istream& is)
{
int v;
while (is >> v, !is.eof()) // 直到遇到文件结束符才停止读取
if (is.bad())
cerr << "Bad Error!\n";
break;
}
else if (is.fail())
cerr << "Wrong Data! Please try again!\n";
is.clear();
is.ignore(1024, '\n');
continue;
cout << v << endl;
return is;
int main()
func(cin);
return 0;
!fail()
failbit
badbit
eofbit
// 复位failbit和badbit,保持其他标志位不变 cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit); /* * clear和setstate的区别: * clear用实参值强制覆盖当前流的条件状态(不论是0还是1) * setstate将实参值(置1的位)叠加到当前流的条件状态 */
// 复位failbit和badbit,保持其他标志位不变
cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);
/*
* clear和setstate的区别:
* clear用实参值强制覆盖当前流的条件状态(不论是0还是1)
* setstate将实参值(置1的位)叠加到当前流的条件状态
*/
'\0'
cout << unitbuf; // 所有输出操作后都会立即刷新缓冲区 // 任何输出都立即刷新,无缓冲 cout << nounitbuf; // 回到正常的缓冲方式
cout << unitbuf; // 所有输出操作后都会立即刷新缓冲区
// 任何输出都立即刷新,无缓冲
cout << nounitbuf; // 回到正常的缓冲方式
cin.tie(&cout); // 仅仅是用来展示:标准库将cin和cout关联在一起 // old_tie指向当前关联到cin的流(如果有的话) ostream *old_tie = cin.tie(nullptr); // cin不再与其他流关联 // 将cin与cerr关联;这不是一个好主意,因为cin应该关联到cout cin.tie(&cerr); // 读取cin会刷新cerr而不是cout cin.tie(old_tie); // 重建cin和cout间的正常关联
cin.tie(&cout); // 仅仅是用来展示:标准库将cin和cout关联在一起
// old_tie指向当前关联到cin的流(如果有的话)
ostream *old_tie = cin.tie(nullptr); // cin不再与其他流关联
// 将cin与cerr关联;这不是一个好主意,因为cin应该关联到cout
cin.tie(&cerr); // 读取cin会刷新cerr而不是cout
cin.tie(old_tie); // 重建cin和cout间的正常关联
if (out) // 检查open是否成功 // open成功,我们可以使用文件了
if (out) // 检查open是否成功
// open成功,我们可以使用文件了
in.close() // 关闭文件 in.open(ifile + "2"); // 打开另一个文件
in.close() // 关闭文件
in.open(ifile + "2"); // 打开另一个文件
#include<iostream>#include<sstream>#include<string>#include<vector>using namespace std;struct PersonInfo{ string name; vector<string> phones;};int main(){ string line, word; // 分别保存来自输入的一行和单词 vector<PersonInfo> people; // 保存来自输入的所有记录 istringstream record; while (getline(cin, line)) { PersonInfo info; // 创建一个保存此记录数据的对象 record.clear(); // 重复使用字符串流时,每次都要调用clear record.str(line); // 将记录绑定到刚读入的行 record >> info.name; // 读取名字 while (record >> word) // 读取电话号码 info.phones.push_back(word); // 保持它们 people.push_back(info); // 将此记录追加到people末尾 } return 0;}
#include<sstream>
#include<vector>
struct PersonInfo
string name;
vector<string> phones;
};
string line, word; // 分别保存来自输入的一行和单词
vector<PersonInfo> people; // 保存来自输入的所有记录
istringstream record;
while (getline(cin, line))
PersonInfo info; // 创建一个保存此记录数据的对象
record.clear(); // 重复使用字符串流时,每次都要调用clear
record.str(line); // 将记录绑定到刚读入的行
record >> info.name; // 读取名字
while (record >> word) // 读取电话号码
info.phones.push_back(word); // 保持它们
people.push_back(info); // 将此记录追加到people末尾
原文链接:http://www.cnblogs.com/juzaizai/p/14321613.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728