C++ c++;在读取文件之前或之后忽略字符串的部分

C++ c++;在读取文件之前或之后忽略字符串的部分,c++,string,vector,io,C++,String,Vector,Io,我正在编写一个程序,其中我使用getline()读取一个文本文件,并将每一行存储在向量中 ifstream flirfile(flir\u time\u dir); 向量flir_次; 弦线; while(getline(flirfile,flir_line)) { flir_次。向后推(flir_线); } 这是程序读取的文本文件: 程序很好,但是我想做的是忽略每行的所有内容,除了中间的十六进制字符串。换句话说,忽略第一个下划线之前和第二个下划线之后的所有内容(包括下划线)。有没有一个简单

我正在编写一个程序,其中我使用
getline()
读取一个文本文件,并将每一行存储在
向量中

ifstream flirfile(flir\u time\u dir);
向量flir_次;
弦线;
while(getline(flirfile,flir_line))
{
flir_次。向后推(flir_线);
}
这是程序读取的文本文件:


<>程序很好,但是我想做的是忽略每行的所有内容,除了中间的十六进制字符串。换句话说,忽略第一个下划线之前和第二个下划线之后的所有内容(包括下划线)。有没有一个简单的方法?在读取文件时还是在向量中存储行之后忽略文本更好?谢谢。

有一些方法可以在分隔符上拆分字符串,这意味着您可以在
'
字符上拆分字符串,并且只使用中间部分

一种简单的方法是使用和:


有几种方法可以在分隔符上拆分字符串,这意味着您可以在
字符上拆分字符串,并且只使用中间部分

一种简单的方法是使用和:


如果编译器支持C++11,则可以使用:

#包括
// ...
std::regex my_regex(“[^]*”);
while(getline(flirfile,flir_line))
{
std::smatch my_match;
if(std::regex_搜索(flir_行、my_匹配、my_regex))
flir_times.push_back(我的匹配[0]);
}

如果编译器支持C++11,则可以使用:

#包括
// ...
std::regex my_regex(“[^]*”);
while(getline(flirfile,flir_line))
{
std::smatch my_match;
if(std::regex_搜索(flir_行、my_匹配、my_regex))
flir_times.push_back(我的匹配[0]);
}

如果是定长格式,可以使用flir\u行字符串对象的substr成员函数从字符位置9提取到24。如果是定长格式,可以使用flir\u行字符串对象的substr成员函数从字符位置9提取到24。
ifstream flirfile(flir_time_dir);
vector<string> flir_times;
string flir_line;

while (getline(flirfile, flir_line))
{
    flir_times.push_back(flir_line);
}
while (getline(flirfile, flir_line))
{
    std::istringstream is{flir_line};

    std::string dummy;
    std::string flir;

    std::getline(is, dummy, '_');
    std::getline(is, flir, '_');

    flir_times.push_back(flir);
}
#include <regex>

// ...

std::regex my_regex("_[^_]*_");

while (getline(flirfile, flir_line))
{
    std::smatch my_match;
    if (std::regex_search(flir_line, my_match, my_regex))
        flir_times.push_back(my_match[0]);
}