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

时间:2015-09-15 05:16:11

标签: c++ string vector io

我正在编写一个程序,我使用getline()读取文本文件并将每行存储在vector<string>中。

ifstream flirfile(flir_time_dir);
vector<string> flir_times;
string flir_line;

while (getline(flirfile, flir_line))
{
    flir_times.push_back(flir_line);
}

这是程序读取的文本文件:

enter image description here

该程序运行正常,但我想要做的是忽略每行上的所有内容,除了中间的十六进制字符串。换句话说,忽略第一个下划线之前和第二个下划线之后的所有内容(包括下划线)。有一个简单的方法吗?并且在文件被读取时或之后当行存储在向量中时忽略文本是否更好?感谢。

2 个答案:

答案 0 :(得分:4)

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

这样做的一种简单方法是使用std::getlinestd::istringstream

'_'

答案 1 :(得分:3)

如果您的编译器支持C ++ 11,您可以使用regular expression

#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]);
}