gpt4 book ai didi

c++ - 想要从文本文件中读取整数

转载 作者:行者123 更新时间:2023-11-30 02:50:56 24 4
gpt4 key购买 nike

所以我的问题是,当我读取文件时,“ki”、“kivel”和“meddig”变量都很好,但“mettol”变量似乎消失了。

struct Haboru {
string ki;
string kivel;
int mettol;
int meddig;
};

int main()
{
Haboru haboruk[10];
int k = 0;
ifstream haboru;
haboru.open("haboruk.txt");
// The rows are in "haboruk.txt" like these:
// Xhosa Zulu 1696 1736
// Zulu Ndebele 1752 1782
// Zulu Sotho 1756 1772
while(!haboru.eof())
{
haboru >> haboruk[k].ki >> haboruk[k].kivel >> haboruk[k].mettol >> haboruk[k].meddig;
k++;
}
}

输出是这样的: enter image description here

最佳答案

使用 !file.eof() 作为提取条件是不正确的。您必须执行提取,然后检查文件是否有效。但即使之后使用 !file.eof() 仍然不正确:

让我们通过为 Haboru 对象创建一个插入器来简化这个过程:

std::istream& operator>>(std::istream& is, Haboru& haboruk)
{
if (!is.good())
return is;

is >> haboruk.ki;
is >> haboruk.kivel;
is >> haboruk.mettol >> haboruk.meddig;

return is;
}

然后您可以创建您的 vector (或 std::array C++11)并为每个元素使用插入器:

std::vector<Haboru> haboruks;
Haboru haboruk;

while (haboru >> haboruk)
{
haboruks.push_back(haboruk);
}

或者...

std::vector<Haboru> haboruks((std::istream_iterator<Haboru>(haboru)),
std::istream_iterator<Haboru>());

关于c++ - 想要从文本文件中读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035454/

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