私のコードには、ChannelPacket という名前の文字列変数があります。Channelpacket を gdb で出力すると、次の文字列が表示されます: 000\000\006\000\f\001\001\000\000sZK"
しかし、Channelpacket.c_str() を印刷すると、「\020」の出力しか得られません。助けてください。
私のコードには、ChannelPacket という名前の文字列変数があります。Channelpacket を gdb で出力すると、次の文字列が表示されます: 000\000\006\000\f\001\001\000\000sZK"
しかし、Channelpacket.c_str() を印刷すると、「\020」の出力しか得られません。助けてください。
c_str()
NUL 文字 ( ) で終了することが理解されている char へのポインターを返します'\0'
。
文字列には埋め込みが含まれているため'\0'
、char へのポインターとして表示すると、文字列の末尾と見なされます。
実際の として表示するstd::string
と、文字列の長さがわかっているため、埋め込まれた NUL 文字に関係なく、すべてが書き出されます。
2 番目のバイトはゼロで、文字列の終わりを意味します。ヌルで終わる文字列として扱うのではなく、生のバイトを出力したい場合は、使用できませんcout << Channelpacket.c_str()
-cout << Channelpacket
代わりに使用してください。