gpt4 book ai didi

c++ - Getline 和 ifstream?

转载 作者:行者123 更新时间:2023-11-28 07:51:41 25 4
gpt4 key购买 nike

我在使用 ifstream 和 getline 时遇到问题。我有一个文本文档:

1020123456
Madison Williams
90
88
79
86
90

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

inFile >> students[0].id;
getline(inFile, students[0].name);

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

我在这里做错了什么?

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

最佳答案

有一个 '\n'在你的数字后面有字符。当你inFile >> students[0].id;你读了这个数字,但停在了 '\n'特点。然后,当你 getline() , 那就是 '\n'字符留在你的流中,所以它读取一个空字符串,跳过 '\n' ,然后移至下一行(您的名字所在的位置)。

您需要跳过 '\n'在您阅读号码之后和调用之前 getline() .打电话
inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
将忽略 inFile 中剩余的内容直到它遇到'\n'特点。所以将其更改为:

inFile >> students[0].id;
inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(inFile, students[0].name);
// continue as normal...

关于c++ - Getline 和 ifstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13640184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com