在C++中,从只知道起始数字(但需要整行)的文本文件中检索某一行
Retrieving a certain line from a text file knowing only the starting numbers (but requiring the whole line) in C++
我有一个文本文件,我需要通过它来获取特定的行,我知道该行包含的前6个字符,但当前代码不想停止将该行复制到另一个字符串,而是返回列表中的最后一个结果。
以下是当前的代码实现:
std::string Type(int num)
{
ifstream reader("TypeID.txt", ios::in | ios::binary); //declaring the file input
string str, replace = "failed";
int search;
while (getline(reader, str));
{
search = str.find(num, 0);
if (search <= 0) // once find has found the string run this
{
replace = str; //copy current line of str to replace
reader.close();//after string is retrieved, close stream
}
}
reader.close();//after string is not retrieved, close stream
return replace;
}
顶部的"num"整数可以包含任何数字(实际上在0-336760之间),然后程序应该遍历文本文件,找到以该数字开头的行,将该行复制到替换字符串,关闭流并返回收集的字符串。但是,直到它到达文件的末尾,然后复制最后一行,这个实现才会停止。
我该怎么做才能抓住find()找到的行?
(我对find的理解是,它返回一个大于0的数字,以表明它已经找到了所需的字符串,因此触发了If语句)
文本文档示例:
0 #System
2 Corporation
3 Region
4 Constellation
28802 Mid-grade Harvest Alpha
28803 Mid-grade Harvest Beta
28804 Mid-grade Harvest Delta
28805 Mid-grade Harvest Epsilon
依此类推,总共21760行
问题就在这里:
search = str.find(num, 0);
search
的类型是int
,但find()
的返回类型是std::size_t
,因此类型不匹配。因此,您必须计算出当值超出范围时会发生什么(std::string::npos的值是多少?)。
其次,返回的值是第一个匹配项(或std::string::npos)的位置。所以,如果它被发现了,我预计结果不会小于零!
if (search <= 0) // So this is not going to work.
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入