Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我想尝试用两个
输出:
这是一个带有%%字符和另一个%%字符的文本
如果不能使用
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我想尝试用两个
%%
符号替换char数组中的百分比符号。因为%
符号会引起问题,所以如果我将其写为输出char数组。因此,必须在不使用字符串的情况下用两个%%
符号替换百分比符号。// This array causes dump because of '%'
char input[] = "This is a Text with % Charakter";
//Therefore Percent Sign(%) must be replaced with two %%.
最佳答案
您可以使用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;
}
输出:
这是一个带有%%字符和另一个%%字符的文本
如果不能使用
boost
,则可以使用replace_all
和std::string::find
编写自己的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();
}
}
10-07 12:06