在 C++ 中使用指针初始化 char 数组或字符串
Posted
技术标签:
【中文标题】在 C++ 中使用指针初始化 char 数组或字符串【英文标题】:Initialize a char array or string with a pointer in C++ 【发布时间】: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
【参考方案1】:
你可以使用std::copy
来复制这样的内容:
char symbol[11];
std::copy(packet + 8, packet + 19, symbol);
或使用std::string
构造函数:
std::string symbol(packet + 8, packet + 19);
【讨论】:
以上是关于在 C++ 中使用指针初始化 char 数组或字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何从 C++ 中的 char 指针初始化 char 数组?