我想用像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”。
答案 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个字符。另请注意,如果replace
和search
重叠,则会出现意外行为。如果这对您很重要,您应该切换for循环的顺序(即先replace
,然后j < k
)。