在任何地方使用来自输入字符的back_inserter过滤数组字符串

时间:2017-09-28 04:06:31

标签: c++

我有一个文本框&字符串列表(数组)。我正在使用std::back_inserter过滤列表:

std::vector<string> upprCase;
....
std::remove_copy_if(
    upprCase.begin(), 
    upprCase.end(), 
    std::back_inserter(filteredList), 
    std::not1(filter(str2)));

使用这个,我能够过滤字符串的初始字符,但是如何在任何地方过滤带字符的字符串?

例如,如果upprCase{abc,bcd,cde}str2=bc(来自文本框),我想要filteredlist{abc,bcd}

1 个答案:

答案 0 :(得分:0)

// copies only the items where predicate returns 'false' ... 
std::remove_copy_if(
    upprCase.begin(),
    upprCase.end(),
    std::back_inserter(filteredList),
    [&](const std::string &s){ return (s.find(str2) == std::string::npos); }
);

或者:

// copies only the items where predicate returns 'true' ... 
std::copy_if(
    upprCase.begin(),
    upprCase.end(),
    std::back_inserter(filteredList),
    [&](const std::string &s){ return (s.find(str2) != std::string::npos); }
);