我有一个可变长度的日志文件,它可能包含也可能不包含我正在寻找的字符串。
行有时间戳等,后跟 < 参数 >#< 值 > 我想检查参数并提取值。
下面的实现有效,但我确信必须有一种更有效的方法来解析文件。
关键点:
- 大多数行将被忽略
- 大约有 1600 个日志文件,大小在 1 - 20 Mb 之间
- 即使每个文件的小幅收益也将是一个优势
注意。parse 函数调用 substring 然后将其转换为 int
任何想法都非常感谢
ifstream fileReader(logfile.c_str());
string lineIn;
if(fileReader.is_open())
{
while(fileReader.good())
{
getline(fileReader,lineIn);
if(lineIn.find("value1#") != string::npos)
{
parseValue1(lineIn);
}
else if(lineIn.find("value2#") != string::npos)
{
parseValue2(lineIn);
}
else if(lineIn.find("value3#") != string::npos)
{
parseValue3(lineIn);
}
}
}
fileReader.close();