gpt4 book ai didi

c++ - 在计算 C++ 的行数时从文件读入字符串

转载 作者:行者123 更新时间:2023-11-28 04:49:41 26 4
gpt4 key购买 nike

我正在尝试将文件读入字符串数组。但是我想这样做就好像我不知道文档的长度一样。所以我想用一个 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::geline (以及 << 运算符和 read 方法)推进存储在流对象中的输入位置。在第一while循环,你读取整个文件,所以在这个循环之后,输入位置指示器指向文件的末尾。为了在第二个循环中从头开始读取,您必须使用 ifstream::seekg 将位置重置回 0方法。这样您就可以“重新阅读”整个文件。

另一方面,正如评论中所指出的,这并不是逐行将文件读入内存的最佳方式。使用 std::vector 可能会更好存储行并附加使用 getline 读取的行给它。或者,您可以一次将整个文件读取到一个缓冲区中,然后将其分成多行。

关于c++ - 在计算 C++ 的行数时从文件读入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48492041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com