gpt4 book ai didi

c++ - 如何从文件中读取行并将其切割成碎片?

转载 作者:行者123 更新时间:2023-11-27 23:10:37 25 4
gpt4 key购买 nike

[编辑]

我说明了我的问题,也许它有更多信息:

我有一个包含很多行的文件,例如“string1 string2 int1 int2”,因此一行包含两个字符串和两个整数。我想逐行读取文件并将这四个数据推送到我的结构(具有相同的变量类型和 num )的 vector 中。我的问题是,我该怎么做,因为 >> 运算符无论如何都不起作用。也不是 getline()。

和代码:

void FromFile(string filename)
{
ifstream stream;
stream.open(filename);
adatok adattemp;
while(stream.good())
{
stream >> adattemp.agresszor >> adattemp.vedo >> adattemp.haborukezdete >> adattemp.haboruvege >> ws;
cout << adattemp.agresszor;
vektor.push_back(adattemp);
}
stream.close();
}

最佳答案

假设每个字符串只是一个单词,这应该可行:

#include <vector>
#include <string>
#include <fstream>

struct Entry {
std::string s1;
std::string s2;
int i1;
int i2;
};

std::vector<Entry> entries;

int main()
{
std::ifstream file("yourfile");
while (file.good()) {
Entry entry;
file >> entry.s1 >> entry.s2 >> entry.i1 >> entry.i2 >> std::ws;
entries.push_back(entry);
}
return 0;
}

注意:在阅读每一行的末尾包含 >> std::ws 很重要。它会吃掉额外的空白。否则,您最终会在文件末尾看到一个额外的垃圾条目。

编辑:正如 Simple 在评论中指出的那样,如果在读取文件时出现任何错误,上面的代码将在 vector 的末尾存储一个垃圾条目。此代码将通过确保在存储条目之前没有错误来解决此问题:

Entry entry;
while (file >> entry.s1 >> entry.s2 >> entry.i1 >> entry.i2 >> std::ws)
{
entries.push_back(entry);
}

关于c++ - 如何从文件中读取行并将其切割成碎片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586201/

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