将文件读入两个数组

时间:2016-02-12 15:20:43

标签: c++ arrays io

我试图用我的小弟弟的测试来编写我自己的词汇,但是当我想将文件中的数据读入两个数组时我遇到了问题 - 首先是英语单词,第二个是波兰语单词。文件看起来很像

黑色 - czarny
红色 - czerwony等。

我的功能:

void VOC::readout()
{
    fstream file;
    VOC *arr = new VOC;
    string line;
    file.open("slowka.txt");
    if(file.good())
    {
        int i=0;
        while(!file.eof())
        {
            getline(file, line);
            size_t pos = line.find(" - "); 
            int position = static_cast<int>(pos);

            file>>arr[i].en;
            file>>arr[i].pl;
            ++i;
        }
    }
}

我认为在第一个数组中插入一行是个好主意,直​​到函数找到&#34; - &#34;,之后将剩下的行插入第二个数组,但是我遇到了一些问题。有人能帮助我吗?我知道我可以通过使用std :: vector解决它,但我很关心使用数组。

1 个答案:

答案 0 :(得分:2)

如果您坚持使用普通数组,首先必须计算文件中的行数,然后分配足够的内存。与std::vector对象不同,数组不会自动增长,但具有固定的大小。

话虽如此,请注意,使用!file.eof()并不是读取流的最佳方式,直到达到目的为止。你可以使用更简单的

std::string line;
while (std::getline(file, line)) {
  // ...
}
相反,它也可以处理错误情况。有关详细信息,请参阅this question(以及相应的答案)。