繁体   English   中英

如何从 c++ 中的文本文件中读取特定行?

[英]How to read a specific line from a text file in c++?

C++ 程序在屏幕上显示项目代码以及相应的项目描述和价格。 它要求用户输入客户购买的商品的代码。 它查找存储在 items.txt 中的项目代码的匹配项。

用户输入项目代码后,如何仅 output 文本文件中的特定行?

您需要逐行读取文件( std::getline ),提取(取决于确切的格式,例如通过在字符串中搜索空格)并比较代码,然后在匹配时返回相应的行。

无法通过索引或内容直接访问文本文件中的行。

这是假设您的意思是文件包含表单中的行

code1 item1
code2 item2
//...

如果代码只是该行的索引,那么您只需要在循环中调用std::getline ,并为该行的当前索引设置一个循环计数器。


如果您在同一个文件上多次执行此操作,您可能应该首先将整个内容逐行解析为std::vector<std::string>std::(unordered_)map<std::string, std::string>或类似的东西以避免代价高昂的重复迭代。

根据用例,可能最好先将数据解析到数据库然后查询数据库,即使它只是例如 sqlite 或类似的东西。

要从文件中的特定行读取,您可以使用fgets它将逐行读取文件。 所以我们把它放在一个循环中并检查循环计数是否等于所需的行号。

这是示例代码。

#include "stdio.h"
#include "stdlib.h"

int main()
{
   FILE* fptr = fopen("file.txt", "r");
   int count = 0;
   int lineNumber = 10; // targeting tenth line

   char line[1024];
        while (fgets(line, sizeof(line), file) != NULL) /* read a line */
        {
            if (count == lineNumber)
            {
                printf("%s\n", line);
                break;
            }
            else
            {
                count++;
            }
        }
   return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM