我想尝试用两个符号替换 char 数组中的百分比符号%%
。因为%
符号会导致问题,如果我写为输出字符数组。因此百分号必须用两个%%
符号替换,而不使用字符串。
// This array causes dump because of '%'
char input[] = "This is a Text with % Charakter";
//Therefore Percent Sign(%) must be replaced with two %%.
我想尝试用两个符号替换 char 数组中的百分比符号%%
。因为%
符号会导致问题,如果我写为输出字符数组。因此百分号必须用两个%%
符号替换,而不使用字符串。
// This array causes dump because of '%'
char input[] = "This is a Text with % Charakter";
//Therefore Percent Sign(%) must be replaced with two %%.
您可以使用 anstd::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;
}
输出:
这是一个带有 %% 字符和另一个 %% 字符的文本
如果你不能使用boost
,你可以编写你自己的replace_all
using std::string::find
and版本std::string::replace
:
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();
}
}