我在C ++中有一个字符串向量[苹果,Orangesandgrapes],现在我也想搜索向量而不是整个字符串,但字符串中的部分是“andgrapes”,并且想要改变它, “nograpes”。这只是一个例子。
Substring search interview question上的回答 对不起,我无法说清楚。
答案 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;
}