Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我想用像php这样的boost替换我的文本。
但是他不能将“ char * const”转换为“ int”。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我想用像php这样的boost替换我的文本。
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”。
最佳答案
在C ++中,字符串文字(如"a abc text"
)是只读的,尝试修改字符串文字将导致未定义的行为。这就是为什么您显示的代码应导致编译器向您发出警告(您具有指向const数据的非const指针),并且如果编译器未发出警告,则您需要启用更多警告。指向字符串文字的指针应始终使用char const*
或更常见的const char *
。
如果要使用可修改的字符串,请使用std::string
(或者,如果要使用C样式的字符串,请使用char
的数组,例如char find[] = "a abc text"
)。