我正在尝试创建一个函数来替换const char*
字符串中所有特定char*
的出现。
这是我的代码:
#include <iostream>
void replace(char **bufp, const char *searchStr, const char *replaceStr)
{
//what should I do here?
}
int main()
{
char *txt = const_cast<char *>("hello$world$");
replace(&txt, "$", "**");
std::cout << "Result: " << txt << '\n';
}
我得到的结果:
Result: hello$world$
Program ended with exit code: 0
我想要的结果
Result: hello**world**
Program ended with exit code: 0
答案 0 :(得分:3)
您的程序已经是未定义的行为,因为您要抛弃const,通常将"hello$world$"
之类的字符串文字放置在只读内存中,并且任何对其进行修改的尝试都可能会导致段错误。改用std::string
。
使用std::string
,您的替换功能可能如下所示:
void replace(std::string& str, const std::string& find, const std::string& replace)
{
std::size_t position{};
while((position = str.find(find)) != std::string::npos){
str.erase(position,find.size());
str.insert(position,replace);
}
}