gpt4 book ai didi

c++ - 将文件读入内存 C++:是否有用于 std::strings 的 getline()

转载 作者:行者123 更新时间:2023-11-30 04:55:09 25 4
gpt4 key购买 nike

我被要求更新我的代码,该代码读取文本文件并将其解析为特定字符串。

基本上,我不想每次都打开文本文件,而是想将文本文件读入内存,并在对象的持续时间内保存它。

我想知道是否有与 getline() 类似的函数,我可以将它用于 std::string,就像我可以用于 std::ifstream 一样。

我知道我可以只使用 while/for 循环,但我很好奇是否还有其他方法。这是我目前正在做的事情:

file.txt:(\n代表换行符)

file.txt

我的代码:

ifstream file("/tmp/file.txt");
int argIndex = 0;
std::string arg,line,substring,whatIneed1,whatIneed2;
if(file)
{
while(std::getline(file,line))
{
if(line.find("3421",0) != string::npos)
{
std::getline(file,line);
std::getline(file,line);
std::stringstream ss1(line);
std::getline(file,line);
std::stringstream ss2(line);
while( ss1 >> arg)
{
if( argIndex==0)
{
whatIneed1 = arg;
}
argIndex++;
}
argIndex=0;
while( ss2 >> arg)
{
if( argIndex==0)
{
whatIneed2 = arg;
}
argIndex++;
}
argIndex=0;
}
}
}

最后 whatIneed1=="whatIneed1"和 whatIneed2=="whatIneed2"。

有没有办法通过将 file.txt 存储在 std::string 而不是 std::ifstream 中并使用像 getline() 这样的函数来做到这一点?我喜欢 getline(),因为它可以更轻松地获取文件的下一行。

最佳答案

如果您已经将数据读入字符串,您可以使用 std::stringstream 将其转换为与 getline 兼容的类文件对象。

std::stringstream ss;
ss.str(file_contents_str);
std::string line;
while (std::getline(ss, line))
// ...

关于c++ - 将文件读入内存 C++:是否有用于 std::strings 的 getline(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53212021/

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