我使用以下代码读取包含名字和姓氏的文件。
名字姓氏
名字姓氏
do
{ in >> tmp2;
cout << tmp2;
} while(tmp2 != '\n');
然而,这并没有检测到行尾,所以当我得到一个无限循环时我无法前进。注意 tmp2 是一个字符。
我怎样才能解决这个问题。
我使用以下代码读取包含名字和姓氏的文件。
名字姓氏
名字姓氏
do
{ in >> tmp2;
cout << tmp2;
} while(tmp2 != '\n');
然而,这并没有检测到行尾,所以当我得到一个无限循环时我无法前进。注意 tmp2 是一个字符。
我怎样才能解决这个问题。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("file");
string first, last, comment;
while (fin >> first >> last) {
cout << first << ' ' << last << endl;
getline(fin, comment); // get the rest annoying strings
}
fin.close();
return 0;
}
一种解决方案:使用字符串流
std::stringstream sstrm;
std::string instr;
while (std::getline(std::cin, instr)) {
sstrm.str(instr);
std::string fname, lname;
sstrm >> fname >> lname;
std::cout << fname << ' ' << lname << '\n';
}
这会丢弃一行中前两个标记之后的任何内容。