Char *替换为char *

时间:2016-06-17 22:14:42

标签: c++ string boost replace char

我想用像php这样的提升替换我的文本。

char* find = "a abc text";
char* search[] = { "a", "b", "c", "d", "e" };
char* replace[] = { "f", "g", "h", "i", "j" };
boost::replace_all(find, search, replace);

但他无法将“char * const”转换为“int”。

2 个答案:

答案 0 :(得分:2)

在C ++中,字符串文字(如"a abc text"只读,尝试修改字符串文字会导致未定义的行为。这就是为什么你展示的代码应该让编译器给你一个警告(你有一个指向const数据的非const指针),如果编译器没有警告你,那么你需要启用更多的警告。指向字符串文字的指针应始终为char const*或更常见的const char *

如果您想要一个可修改的字符串,请使用std::string(或者如果您希望C风格的字符串使用char的数组,例如char find[] = "a abc text")。

答案 1 :(得分:1)

你实际上并不需要使用boost来做一些微不足道的事情。

func goBack() {
  self.webView?.goBack()
}

请注意,此代码假定char value[] = "foobar"; const char *search = "abcde"; const char *replace = "fghij"; size_t i, j, k = strlen(value); for (i = 0; i < 5; i ++) { for (j = 0; j < k; j ++) { if (value[j] == search[i]) value[j] = replace[i]; } } search中有5个字符。另请注意,如果replacesearch重叠,则会出现意外行为。如果这对您很重要,您应该切换for循环的顺序(即先replace,然后j < k)。