我需要从字符数组中读回“id”和“port”。但是 cout 不打印任何东西。正确的做法是什么?
感谢您的帮助。
int main() {
char addr[6];
int id = 2;
short port = 1;
memcpy(&addr[0], &id, sizeof(int));
memcpy(&addr[4], &port, sizeof(short));
cout << "addres:" << addr << endl;
return 0;
}
最佳答案
因为,假设 int 在您的目标平台上是 32 位的,您正在复制 4 个字节(0, 0, 0, 2
或 2, 0, 0, 0
, 取决于字节顺序)到 addr
指向的地址中,假设 short 是 16 位,你正在复制 2 个字节(0, 1
或 1, 0
,取决于字节序)在 addr+4
指向的地址,导致 addr
包含字节 0、0、0、2、 0、1
或 2、0、0、0、1、0
。
C++ 中的 C 风格字符串以 0 结尾,因此如果第一个字符为 0,addr
将被解释为空字符串。
如果第一个字符是 2,您仍然看不到任何内容,因为那不是可打印字符。 (它是控制字符 STX(文本开始)。)
关于c++ - 为什么 char 数组不打印值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58161424/