我有一个包含信息的文本文件。它看起来像这样:
Rimas 252 45
Robertas 187 13
Jurgis 205 36
Matas 58 50
Antanas 145 5
10 20
如您所见,每一行都有三个不同的成员(名称,第一个数字,第二个数字),直到最后一行,它只有两个成员(两个数字)。我正在尝试将此信息读取到我的代码中。一切正常,直到最后一行,因为它有两个成员,并且在该行中没有字符串。我需要让我的代码识别不同的行并读取其他方法,与上面的行不同。
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct lankytojai { // name, first number, second number
string vardas;
int litai;
int ltcentai;
};
void read(vector<lankytojai> l) {
ifstream failas("vvv.txt"); //reads three members correct, last two incorrectly
int i = 0;
while(failas) {
lankytojai lan;
int lt;
string var;
while(!(failas >> lan.ltcentai)) {
failas.clear();
if(failas >> var) {
lan.vardas += var;
}
if(failas >> lt) {
lan.litai = lt;
}
else {
return;
}
}
l.push_back(lan);
cout << l[i].vardas << " " << l[i].litai << " " << l[i].ltcentai << endl;
i++;
}
}
int main() {
vector<lankytojai> l;
read(l);
return 0;
}
答案 0 :(得分:0)
只需重新构建代码,使用std::getline()
一次获取整行(作为std::string
),然后检查它包含的空格数。
for (string line; getline(failas, line); ) {
size_t space_count = count(line.begin(), line.end(), ' ');
// ...
}