【发布时间】:2018-01-28 22:28:04
【问题描述】:
我正在尝试将文件读入字符串数组。但是我想这样做,就好像我不知道文档的长度一样。所以我想用一个while循环来计算行数,然后再用一个循环来读取文档。
当我这样做时,它工作正常,但它假设我知道数组大小的长度。
string count_lines;//dummy string to read the line temp
string votes[11];
string ID[11];
string whole_line[11];
int i = 0;
while (getline(file, count_lines))
{
whole_line[i] = count_lines;
ID[i].assign(count_lines, 0, 4);
votes[i].assign(count_lines, 6, 4);
cout << count_lines << endl;
i++;
}
但我尝试做这种变化,但它只是打印具有与我打印上面选项相同的功能的空白行
string count_lines;//dummy string to read the line temp
string votes[11];
string ID[11];
string whole_line[11];
int i = 0;
while (getline(file, count_lines))
{
i++;
}
int k = 0;
while (getline(file, count_lines) && k < i)
{
whole_line[k] = count_lines;
ID[k].assign(count_lines, 0, 4);
votes[k].assign(count_lines, 6, 4);
cout << count_lines << endl;
i++;
}
我不确定自己做错了什么。
【问题讨论】:
-
不要使用数组,使用 std::vector。
-
第二个 for 循环尝试在 eof 之后读取。在运行第二个循环之前,您需要找到文件的开头。
-
这是一个奇怪的问题。如果性能是任何一种问题,我认为这是因为您似乎不只是想采用明显的解决方案,那么为什么不将整个文件读入一大块然后只记录换行符的位置?