1

私のコードには、ChannelPacket という名前の文字列変数があります。Channelpacket を gdb で出力すると、次の文字列が表示されます: 000\000\006\000\f\001\001\000\000sZK"

しかし、Channelpacket.c_str() を印刷すると、「\020」の出力しか得られません。助けてください。

4

2 に答える 2

10

c_str()NUL 文字 ( ) で終了することが理解されている char へのポインターを返します'\0'

文字列には埋め込みが含まれているため'\0'、char へのポインターとして表示すると、文字列の末尾と見なされます。

実際の として表示するstd::stringと、文字列の長さがわかっているため、埋め込まれた NUL 文字に関係なく、すべてが書き出されます。

于 2013-09-18T15:24:31.427 に答える
3

2 番目のバイトはゼロで、文字列の終わりを意味します。ヌルで終わる文字列として扱うのではなく、生のバイトを出力したい場合は、使用できませんcout << Channelpacket.c_str()-cout << Channelpacket代わりに使用してください。

于 2013-09-18T15:23:44.600 に答える