首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Getline和ifstream?

Getline和ifstream?
EN

Stack Overflow用户
提问于 2012-11-30 14:35:22
回答 1查看 362关注 0票数 0

我在连接ifstream和getline时遇到了一些问题。我有一个文本文档:

代码语言:javascript
复制
1020123456
Madison Williams
90
88
79
86
90

并希望将名称分配给学生,其中students[0].name是类型为struct的学生。我试着用

代码语言:javascript
复制
inFile >> students[0].id;
getline(inFile, students[0].name);

"cout << students[0].id"正确地生成了ID,但是.name什么也不做。

我在这里做错了什么?

"inFile.getline(students[0].name)"会产生错误。

EN

回答 1

Stack Overflow用户

发布于 2012-11-30 14:42:45

在你的数字后面有一个'\n'字符。当您使用inFile >> students[0].id;时,您读取的是数字,但仅限于'\n'字符。然后,当您使用getline()时,流中还剩下那个'\n'字符,因此它读取一个空字符串,跳过'\n',然后转到下一行(即您的名字所在的位置)。

在读取数字之后,在调用getline()之前,您需要跳过'\n'。调用inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');将忽略inFile中剩余的内容,直到它遇到'\n'字符。因此,将其更改为:

代码语言:javascript
复制
inFile >> students[0].id;
inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(inFile, students[0].name);
// continue as normal...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13640184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档