cout 字符串和 c_str 在 C++ 中给出不同的值
cout string and c_str gives different values in c++
在我的代码中,我有一个名为ChannelPacket的字符串变量。当我在gdb中打印通道包时,它给出了以下字符串:"\020\000B\001\237\246&\b
\000\016\000\002\064\001\000\000\000\005\000\021\002\000\000\006\000\f\001\001\000\000sZK"但是如果我打印 Channelpacket.c_str(),它只会给出"\020 输出。请帮助我。
c_str()
返回一个指向字符的指针,该指针被理解为由 NUL 字符 (' '
) 终止。
由于字符串包含嵌入的' '
,因此当被视为指向字符的指针时,它被视为字符串的末尾。
当被视为实际的std::string
时,字符串的长度是已知的,因此无论嵌入的NUL字符如何,整个内容都会被写出来。
第二个字节是零,表示字符串的结尾。 如果要输出原始字节,而不是将它们视为以 null 结尾的字符串,则不能使用 cout << Channelpacket.c_str()
- 请改用 cout << Channelpacket
。