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

标签 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

程序运行良好,但我想做的是忽略每一行中的所有内容,除了中间的十六进制字符串。所以换句话说,忽略第一个下划线之前和第二个下划线(包括下划线)之后的所有内容。有没有简单的方法可以做到这一点?在读取文件时或之后将行存储在 vector 中时忽略文本更好吗?谢谢。

最佳答案

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

一个简单的方法是使用 std::getlinestd::istringstream :

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

关于c++在读取文件之前或之后忽略字符串部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578197/

相关文章:

c++ - 将 Int 转换为 char * 并显示在屏幕上

c++ - 在 C++ 中将 char 连接到字符串时会发生什么?

c - 解决 C 中的意外字符串行为

c - 如何将输入添加到数组并在用户输入字符串 'stop' 时停止?

c++ - 操作数 "="和 "!="的 vector 错误迭代器

c++ - 比较具有不同符号的整数

c++ - 相同的比较函数为 C++ 中的排序和优先级队列提供不同的输出

c++ - 查找 vector 数组中是否存在具有相同值的结构

c++ - 无法取消引用超出范围的 vector 迭代器 - 有什么问题?

C++ 将一个 vector append 到另一个 vector