c++ - 如何使用条件删除一行?

标签 c++ stl

我有一个带有下一行的字符串 (ifstream):

foo
foo+..
foo

而且,我想知道如何获取有符号 + 的行并删除剩余的行:

foo+..

为了将流转换为字符串,我使用:

string stream((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());

最佳答案

这个替代解决方案怎么样:

#include <fstream>
#include <iostream>
#include <string> 
#include <vector>
#include <algorithm>

using namespace std;

bool HasNoPlus(const string &value)  
{ 
    return value.find('+') == string::npos; 
}

int main(int argc, char* argv[])   
{
    ifstream ifs("d:\\temp\\test.txt");

    vector<string> out;

    remove_copy_if(istream_iterator<string>(ifs), 
                   istream_iterator<string>(), 
                   back_inserter(out), 
                   HasNoPlus);

    return 0;
}

关于c++ - 如何使用条件删除一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724306/

相关文章:

c++ - 迭代标准容器中的所有元素对(C++)

c++ - OpenCV HOGDescriptor 错误

c++ - 显式模板特化的语法

c++ - 它也不是最大/最小代码我如何找出这个代码?

c++ - 使用英特尔线程构建模块 : error operands to ? 进行编译:

c++ cout和char-pointers,我缺少的指针

c++ - 在 C++ 中创建模板时是否可以找到 sizeof(T)?

c++ - 如何预取不常用的代码?

c++ - 有关 C++ STL 的问题?

c++ - 与 std::string 的简单通配符匹配