C++ 将文件读入两个数组

C++ 将文件读入两个数组,c++,arrays,io,C++,Arrays,Io,我正试着为我的弟弟写一个测试我自己的词汇表,但当我想将文件中的数据读入两个数组时,我遇到了一个问题——第一个是英语单词,第二个是波兰语单词。文件看起来很像 黑色-卡尼 红-沙文等 我的职能是: void VOC::readout() { fstream file; VOC *arr = new VOC; string line; file.open("slowka.txt"); if(file.good()) { int i=0;

我正试着为我的弟弟写一个测试我自己的词汇表,但当我想将文件中的数据读入两个数组时,我遇到了一个问题——第一个是英语单词,第二个是波兰语单词。文件看起来很像

黑色-卡尼
红-沙文等

我的职能是:

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;
        }
    }
}
void VOC::readout()
{
流文件;
VOC*arr=新VOC;
弦线;
打开(“slowka.txt”);
if(file.good())
{
int i=0;
而(!file.eof())
{
getline(文件,行);
大小\u t pos=行。查找(“-”);
内部位置=静态位置(位置);
文件>>arr[i].en;
文件>>arr[i].pl;
++一,;
}
}
}

我认为在第一个数组中插入一行,直到函数找到“-”,然后再在第二个数组中插入其余的行是个好主意,但我有一些问题。有人能帮我吗?我知道我可以通过使用std::vector来解决这个问题,但我想通过使用数组来解决这个问题

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

尽管如此,请注意使用
!file.eof()
不是在流到达末尾之前读取流的最佳方法。您可以使用更简单的

std::string line;
while (std::getline(file, line)) {
  // ...
}

相反,它还考虑了错误条件。有关这方面的更多信息,请参阅(以及相应的答案)。

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

尽管如此,请注意使用
!file.eof()
不是在流到达末尾之前读取流的最佳方法。您可以使用更简单的

std::string line;
while (std::getline(file, line)) {
  // ...
}

相反,它还考虑了错误条件。请参阅(以及相应的答案)以了解更多信息。

arr
指向一个
VOC
对象,而不是数组。因为你不知道有多少,所以一个
std::vector
是你最好的选择?我认为将size\u t与int进行比较会导致溢出,是不是我错了?与其使用两个数组,不如使用一个包含两个单词的结构的
std::vector
arr
指向一个
VOC
对象,而不是数组。因为你不知道有多少,所以一个
std::vector
是你最好的选择?我认为比较size\u t和int会导致溢出,是不是我错了?与其使用两个数组,不如使用一个包含两个单词的
std::vector
结构。谢谢!我只想学习如何完美地使用数组,然后进入std::vector。真不敢相信我能忘记分配内存这样显而易见的事情。字符串::在这里找到一个使用它的好主意吗?谢谢!我只想学习如何完美地使用数组,然后进入std::vector。真不敢相信我能忘记分配内存这样显而易见的事情。string::在这里找到使用它的好方法吗?