gpt4 book ai didi

c++ - getline(file,array) 没有移动到下一行

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:47 25 4
gpt4 key购买 nike

我查看了其他 getline 问题,但无法找到解决方案。我将有一个格式如下的文件:

book
author
book
author
...

代码是将书名读入 book.name 的结构,然后将作者读入 book.author,但我得到的是书的空白,只有作者在打印。我知道它正在覆盖 book.name 但我不确定如何补救。

#include <string>
#include <fstream>
using namespace std;

struct Books {
string name;
string author;
};

Books books[100];


int main(){
fstream file;
file.open("test.txt");

while(!file.eof()){
getline(file,books[0].name);
getline(file,books[0].author);
}
file.close();
cout << books[0].name << " " << books[0].author << endl;

return 0;
}

更新:现在也可以使用 vector ,虽然我还不能像下面的答案那样花哨,但对于我目前的 C++ 水平来说,这至少更容易理解一些。

struct book_meta_data {
string name;
string author;
};
int i = 0;
book_meta_data b;
while ( getline(f,b.name) && getline(f,b.author) &&
++i){
books.push_back(b);
}

cout << books.size() << endl;
for (vector<int>::size_type i = 0; i != books.size(); i++){
cout << books[i].name << " " << books[i].author << endl;
}

最佳答案

你应该改变

while(!file.eof()){
getline(file,books[0].name);
getline(file,books[0].author);
}

int i = 0;
while(getline(file,books[i].name) && getline(file,books[i].author) && ++i < 100);

关于c++ - getline(file,array) 没有移动到下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472998/

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