cout 字符串和 c_str 在 C++ 中给出不同的值

cout string and c_str gives different values in c++

本文关键字:C++ 字符串 str cout      更新时间:2023-10-16

在我的代码中,我有一个名为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