C ++如何只从文件中读取几行

时间:2016-10-08 17:12:16

标签: c++ file

我试图从我的文件中只读取10行或100行。有什么方法可以让我读到这样的某一行吗?

1 个答案:

答案 0 :(得分:1)

要从文件中读取单个行,请使用:

std::string text_from_file;
std::getline(text_file_stream, text_from_file);

在C ++中,为了多次执行动作,我们使用循环。因此,要从文件中读取10行,我们将使用for循环:

for (unsigned int i = 0U; i < 10U; ++i)
{
  std::getline(text_file_stream, text_from_file);
}

另一种方法:

unsigned int lines_read = 0U;
while ((lines_read < 10) && (std::getline(text_file_stream, text_from_file)))
{
  ++lines_read;
}

要读取100行,您可以将常量从10更改为100.

跳过行
跳过行或寻找给定行的根本问题是文本文件具有可变长度记录。您必须阅读每一行以确定下一行的起始位置。

因此,跳过行的技术是将一行读入文本变量并忽略它,就像上面的例子一样。

有一些方法可以加快速度,但它们涉及将大块数据读入内存或将文件视为内存(例如内存映射)。这种技术的一个问题是处理你想要的文本行穿过缓冲区末尾的情况(它不完全在缓冲区中)。这些技术可以在StackOverflow或Internet上的其他帖子中找到。

阅读直到分隔符
分隔符表示文本的结尾。文本文件的标准分隔符是换行符。您可以使用std::getline的第3个参数读取文本,直到逗号,句点选项卡或其他分隔符。

const char delimiter = '.';
std::string text_from_file;
std::getline(text_data_stream, text_from_file, delimiter);

所有这些都可以在优秀的教科书或a good online reference中找到。