我有一个文件,其中包含不同行中的不同列。例如
10 20 30 60
60 20 90 100 40 80
20 50 60 30 90
....
我想读取每行中的最后三个数字。所以输出将是
20 30 60
100 40 80
60 30 90
我不能使用以下结构,因为每行中的大小可变
结构1:
std::ifstream fin ("data.txt");
while (fin >> a >> b >> c) {...}
结构2:
string line;
stringstream ss;
getline(fin, line);
ss << line;
int x, y, z;
ss >> x >> y >> z >> line;
那我该怎么办?
答案 0 :(得分:1)
将它们读入std::vector
并删除除最后3项之外的所有内容。
std::string line;
while (getline(fin, line))
{
std::vector<int> vLine;
istringstream iss(line);
std::copy(std::istream_iterator<int>(iss), std::istream_iterator<int>(), std::back_inserter(vLine));
if (vLine.size() > 3)
{
vLine.erase(vLine.begin(), vLine.begin() + (vLine.size() - 3));
}
// store vLine somewhere useful
}