Pra*_*ll 7 c++ string substring
如何从字符串中删除模式的所有实例?
string str = "red tuna, blue tuna, black tuna, one tuna";
string pattern = "tuna";
Run Code Online (Sandbox Code Playgroud)
Dea*_*ock 12
从字符串中删除模式的所有实例,
#include <string>
#include <iostream>
using namespace std;
void removeSubstrs(string& s, string& p) {
string::size_type n = p.length();
for (string::size_type i = s.find(p);
i != string::npos;
i = s.find(p))
s.erase(i, n);
}
int main() {
string str = "red tuna, blue tuna, black tuna, one tuna";
string pattern = "tuna";
removeSubstrs(str, pattern);
cout << str << endl;
}
Run Code Online (Sandbox Code Playgroud)
这是一个基本问题,您最好看一下标准库中的字符串功能.
#include <iostream>
#include <string>
int main() {
std::string str = "red tuna, blue tuna, black tuna, one tuna";
std::string pattern = "tuna";
std::string::size_type i = str.find(pattern);
while (i != std::string::npos) {
str.erase(i, pattern.length());
i = str.find(pattern, i);
}
std::cout << str;
}
Run Code Online (Sandbox Code Playgroud)
从C++ 11开始,你有另一种解决方案(感谢Joachim提醒我这一点)基于正则表达式
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string str = "red tuna, blue tuna, black tuna, one tuna";
std::regex pattern("tuna");
std::cout << std::regex_replace(str, pattern, "");
}
Run Code Online (Sandbox Code Playgroud)