我想尝试用两个%%
符号替换char数组中的百分号。因为%
符号会导致问题,如果我写为输出字符数组。因此,必须使用两个%%
符号替换百分号,而不使用字符串。
// This array causes dump because of '%'
char input[] = "This is a Text with % Charakter";
//Therefore Percent Sign(%) must be replaced with two %%.
答案 0 :(得分:6)
您可以使用std::string
为您处理必要的内存重新分配,并使用boost
算法让一切变得更轻松:
#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
std::string input("This is a Text with % Charakter and another % Charakter");
boost::replace_all(input, "%", "%%");
std::cout << input << std::endl;
}
输出:
这是带有%% Charakter的文本和另一个%% Charakter
如果您无法使用boost
,则可以使用std::string::find
和std::string::replace
编写自己的replace_all
版本:
template <typename C>
void replace_all(std::basic_string<C>& in,
const C* old_cstring,
const C* new_cstring)
{
std::basic_string<C> old_string(old_cstring);
std::basic_string<C> new_string(new_cstring);
typename std::basic_string<C>::size_type pos = 0;
while((pos = in.find(old_string, pos)) != std::basic_string<C>::npos)
{
in.replace(pos, old_string.size(), new_string);
pos += new_string.size();
}
}