我正在使用getline从输入数据文件中获取类似
的行1 9
5 5
6 7
...
第一个数字是某人兄弟姐妹的数量,第二个数字是某人的年龄。
const int MAXLINE=50;
int main(int argc, char *argv[]) {
int numberOfSiblings;
int age;
char oneline[MAXLINE];
ifstream inputData;
inputData.open(argv[1]);
while ( !(inputData.eof()) ) {
inputData.getline(oneline, MAXLINE);
numberOfSiblings = oneline[0] - '0';
age = oneline[2]-'0';
}
}
然而,由于空白,我无法假设这些整数总是处于同一指数。
因为如果有两个空格而不是一个年龄现在将在索引3中。我如何解释这个?
另外,如果我有两位数字会怎么样?
答案 0 :(得分:2)
让标准流为您完成:
inputData >> numberOfSiblings >> age;
答案 1 :(得分:1)
std :: istream已经有operator>>
跳过任何前导空格,然后为你读取一个int。这似乎是你需要的,所以我只是使用它。
如果我这样做,我会从一个结构开始代表一个人的数据:
struct data {
int num_siblings;
int age;
};
然后我会写一个函数来读取其中一个项目:
std::istream &operator>>(std::istream &is, data &d) {
return is >> d.num_siblings >> d.age;
}
这样,您就可以使用data
从流中读取operator>>
项:
std::ifstream input("people.txt");
data person;
input >> person;
答案 2 :(得分:0)