0

我使用以下代码读取包含名字和姓氏的文件。

名字姓氏

名字姓氏

do
{   in >> tmp2;
    cout << tmp2;
} while(tmp2 != '\n');

然而,这并没有检测到行尾,所以当我得到一个无限循环时我无法前进。注意 tmp2 是一个字符。

我怎样才能解决这个问题。

4

2 回答 2

2
#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;
}
于 2013-04-03T21:41:54.147 回答
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';
}

这会丢弃一行中前两个标记之后的任何内容。

于 2013-04-03T21:52:11.793 回答