我想用boost类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”。
发布于 2016-06-17 22:17:30
在C++中,字符串文字(如"a abc text")是只读的,试图修改字符串文字会导致未定义的行为。这就是为什么您显示的代码应该导致编译器给您一个警告(您有一个指向const数据的非const指针),如果编译器没有警告您,那么您需要启用更多的警告。指向字符串文字的指针应该始终由char const*或更常见的const char *来表示。
如果您想要一个可修改的字符串,请使用std::string (或者如果您想要C风格的字符串使用char数组,比如char find[] = "a abc text")。
发布于 2016-06-17 22:23:08
实际上,对于像这样琐碎的事情,不需要使用boost。
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和replace中有5个字符。还请注意,如果search和replace重叠,就会出现意想不到的行为。如果这对您很重要,您应该切换for-循环的顺序(即,首先是j < k,然后是i < 5)。
https://stackoverflow.com/questions/37891119
复制相似问题