【发布时间】:2020-07-04 02:13:14
【问题描述】:
我有一个指针,其中下一个 X 元素是 ASCII 字符,末尾带有 '\0'。我需要将 ASCII 字符保存在 char 数组或 string 类型中。
是否可以使用指针动态初始化C++ 中的string 或char 数组?
下面的代码无法编译并出现以下错误:
char symbol[11];
symbol = (packet+8);
错误:数组类型“char [11]”不可赋值
(packet 是保存数据的指针,ASCII 字符从第 8 个位置开始)。
理想情况下,我希望避免遍历指针来初始化字符串或字符数组。
for (int i = 0; i < 11; i++) {
symbol[i] = *(packet+8+i);
}
提前感谢您的所有帮助。
【问题讨论】:
-
什么是
packet? -
您不能分配 c 字符串。你可以分配一个
std::string -
std::string symbol = packet + 8;应该可以正常工作。或者如果packet不是NUL终止的,那么std::string symbol(packet + 8, 11); -
@KorelK 数据包是一个 const u_char*。
-
@IgorTandetnik 我收到以下错误:从 'const u_char ' (aka 'const unsigned char *') 到 'std::string' 没有可行的转换。数据包的类型为 const u_char