[英]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.