我知道它们之间的区别:
char *a = "string";
char p[] = "string";
来自*a
,它的作用如下...
+-----+ +---+---+---+---+---+---+---+
a: | *======> | s | t | r | i | n | g |\0 |
+-----+ +---+---+---+---+---+---+---+
如果我想创建另一个变量说
char *b;
我希望它复制指针 a 指向的所有内容,而不是指向 a 的内容。
+-----+ +---+---+---+---+---+---+---+
a: | *======> | s | t | r | i | n | g |\0 |
+-----+ +---+---+---+---+---+---+---+
b: | *======> | s | t | r | i | n | g |\0 |
+-----+ +---+---+---+---+---+---+---+
如何做到这一点?
最佳答案
在C++中,你可以这样做
const size_t n = strlen(a); // excludes null terminator
char *b = new char[n + 1]{}; // {} zero initializes array
std::copy_n(a, n, b);
但是我建议使用 std::string
而不是 C 风格的字符串,因为它是
- 正确处理
\0
嵌入的字符串 - 安全
- 易于使用
关于c++ - 如何复制 const char* 类型变量的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399643/