gpt4 book ai didi

c++ - 从文件中的特定位置读取 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:56 24 4
gpt4 key购买 nike

我有一个 C++ 程序需要返回出现特定单词的行。例如,如果我的文件如下所示:

the cow jumped over
the moon with the
green cheese in his mouth

我需要打印带有“with”的行。程序获取的所有内容都是距文件开头的偏移量(在本例中为 24,因为“with”是距文件开头的 24 个字符)。

如何仅使用偏移打印整行“带月亮的月亮”?

非常感谢!

最佳答案

您可以通过单独读取每一行并记录读取前后的文件位置来做到这一点。然后它只是一个简单的检查,看看单词的偏移量是否落在该行的范围内。

#include <iostream>
#include <fstream>
#include <string>

std::string LineFromOffset(
const std::string &filename,
std::istream::pos_type targetIndex)
{
std::ifstream input(filename);

// Save the start position of the first line. Should be zero of course.
std::istream::pos_type lineStartIndex = input.tellg();

while(false == input.eof())
{
std::string line;

std::getline(input, line);

// Get the end position of the line
std::istream::pos_type lineEndIndex = input.tellg();

// If the index of the word we're looking for in the bounds of the
// line, return it
if(targetIndex >= lineStartIndex && targetIndex < lineEndIndex)
{
return line;
}

// The end of this line is the start of the next one. Set it
lineStartIndex = lineEndIndex;
}

// Need a better way to indicate failure
return "";
}

void PrintLineTest()
{
std::string str = LineFromOffset("test.txt", 24);

std::cout << str;
}

关于c++ - 从文件中的特定位置读取 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968565/

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