Меня попросили обновить мой код, который читает текстовый файл и анализирует его для конкретных строк.
По сути, вместо того, чтобы открывать текстовый файл каждый раз, я хочу прочитать текстовый файл в память и сохранить его на время действия объекта.
Мне было интересно, существует ли подобная функция для 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 вместо asd std :: ifstream с использованием функции, подобной getline ()? Мне нравится getline (), потому что он значительно облегчает получение следующей строки файла.