gpt4 book ai didi

c++ - 在 C++ 中从仅知道起始数字(但需要整行)的文本文件中检索特定行

转载 作者:行者123 更新时间:2023-11-28 06:40:06 25 4
gpt4 key购买 nike

我有一个文本文件,我需要通过它来获取特定行,我知道该行包含的前 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 的类型是intfind() 的返回类型是std::size_t所以你的类型不匹配。因此,您必须弄清楚当值超出范围时会发生什么(std::string::npos 的值是多少?)。

其次,返回的值是第一个匹配项的位置(或 std::string::npos)。因此,如果找到它,我不希望结果小于零!

if (search <= 0) // So this is not going to work.

关于c++ - 在 C++ 中从仅知道起始数字(但需要整行)的文本文件中检索特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129654/

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