c++ - 字符* 替换为字符*

标签 c++ string boost replace char

<分区>

我想用 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 数据的非常量指针),如果编译器没有警告您,那么您需要启用更多警告。指向字符串文字的指针应始终由 char const* 或更常见的 const char * 组成。

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

关于c++ - 字符* 替换为字符*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891119/

相关文章:

c++ - 初始化 SSL 和 libcurl 并获取 "out of memory"

python - 使用 python 将两个文件中的每一行连接为一行

c++ - 如何在 GCC 4.5 中使用 C++0x 原始字符串?

arrays - 检查并仅从字符串数组中获取 Int

c - 找到给定输入和目标字符串所需的最少转换次数

c++ - Boost 函数赋值抛出异常

c++ - 命名空间 'forward' 中没有名为 'std' 的成员

c++ - 使用 UNC 路径读取/写入文件 - 在 C++ 中

c++ - 为什么编译器不能(或不能)推断出 static_cast 的类型参数?

c++ - 压入、弹出和基本堆