如何检查某个字母或短语的字符串向量?

时间:2012-01-23 15:06:40

标签: c++

我在C ++中有一个字符串向量[苹果,Orangesandgrapes],现在我也想搜索向量而不是整个字符串,但字符串中的部分是“andgrapes”,并且想要改变它, “nograpes”。这只是一个例子。

Substring search interview question上的回答 对不起,我无法说清楚。

2 个答案:

答案 0 :(得分:3)

我会使用boost::replace_all

#include <iostream>
#include <vector>
#include <string>    
#include <boost/algorithm/string/replace.hpp>

int main()
{
    std::vector<std::string> v = { "Apples", "Orangesandgrapes" };    
    for (auto & s : v)    
    {
        boost::replace_all(s, "andgrapes", "nograpes");
        std::cout << s << '\n';
    }        
}

答案 1 :(得分:2)

您可以这样做:

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

using namespace std;

int main() {

    vector<string> v;
    v.push_back("Apples");
    v.push_back("Applesandgrapes");
    for_each(v.begin(), v.end(),
        [] (string& s)
    {
        size_t pos = s.find("andgrapes");
        if(string::npos != pos)
        {
            s.erase(pos);
            s += "nograpes";
        }
    });

        copy(v.begin(), v.end(), ostream_iterator<string>(cout));
        return 0;

}