因此,我正在一个项目上,我发现了几个选项,但感觉好像没有一个合适的选择。
我有以下格式的跟踪文件:
2018-08-09 09:30:34.118 Info 0 ...
2018-08-09 09:30:34.125 SystemInfo 0 ...
不同的跟踪文件应该是可比较的,因此需要删除日期和时间。
到目前为止,我的程序如下:
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <fstream>
#include <string>
#include <iostream>
#include <ctime>
using namespace std;
void main(string filename)
{
ifstream in(filename);
ofstream out;
string line, sub_line;
if (in.is_open())
{
out.open("stripped_" + filename);
while (getline(in, line))
{
if (in.good())
{
if ()
sub_line = line.substr(26);
out << sub_line;
in.close();
out.close();
}
}
}
else
{
cout << "File cannot be opened..." << endl;
}
}
我不知道如何检查这种格式,我会很感激任何形式的帮助或建议。
答案 0 :(得分:0)
您可以使用正则表达式(regex)查找字符串中的模式。 这是在C ++中使用正则表达式的方法:
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
string strs[] = { "2018-08-09 09:30:34.118", "Foo", "Hello" };
regex reg(R"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})");
for (auto & i : strs)
{
smatch m;
if (regex_search(i, m, reg))
cout << "Correct!" << endl;
else
cout << "Not correct" << endl;
}
return 0;
}
\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})
表示类似于2018-08-09 09:30:34.118
的字符串格式。您可以使用std::regex_search
来判断字符串是否遵循格式。