2017-09-28 40 views
0

我有一個文本框&字符串列表(數組)。我使用過濾的std::back_inserter名單:在任何地方使用來自輸入字符的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}

回答

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

它的工作原理三江源 – sam1991