Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 要从文本文件中读取整数吗_C++_String_Integer - Fatal编程技术网

C++ 要从文本文件中读取整数吗

C++ 要从文本文件中读取整数吗,c++,string,integer,C++,String,Integer,所以我的问题是,当我读取文件时,“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");

所以我的问题是,当我读取文件时,“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++;
    }
}
输出如下:

使用
!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;
}
然后,您可以创建向量(或
std::array
C++11),并为每个元素使用插入器:

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

while (haboru >> haboruk)
{
    haboruks.push_back(haboruk);
}
std::vector haboruks;
哈博鲁·哈博鲁克;
而(哈博鲁>>哈博鲁克)
{
哈博鲁克。推回(哈博鲁克);
}
或者

std::vector haboruks((std::istream_迭代器(haboru)),
std::istreamu迭代器();

在循环中添加一些调试打印,以便在读取值时打印这些值。然后,将输出添加到问题。嘿,谢谢你接受我的回答!快速提问:我的代码对你有用吗?
std::vector<Haboru> haboruks((std::istream_iterator<Haboru>(haboru)),
                              std::istream_iterator<Haboru>());