我试图用我的小弟弟的测试来编写我自己的词汇,但是当我想将文件中的数据读入两个数组时我遇到了问题 - 首先是英语单词,第二个是波兰语单词。文件看起来很像
黑色 - czarny我的功能:
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解决它,但我很关心使用数组。
答案 0 :(得分:2)
如果您坚持使用普通数组,首先必须计算文件中的行数,然后分配足够的内存。与std::vector
对象不同,数组不会自动增长,但具有固定的大小。
话虽如此,请注意,使用!file.eof()
并不是读取流的最佳方式,直到达到目的为止。你可以使用更简单的
std::string line;
while (std::getline(file, line)) {
// ...
}
相反,它也可以处理错误情况。有关详细信息,请参阅this question(以及相应的答案)。