-1

amqp (RabbitMQ) C ライブラリchar*で長さNを送信するには? すべてのサンプルで、ヌル終了スティンジではなく、ペアとその?のようなものを使用しています。amqp_basic_cstring(char*)char *length

4

2 に答える 2

1

APIにはありません。C文字列を構造体にラップするamqp_basic_cstring()ことを意味していると思います。この関数を使用するときは、文字列をカウントするために内部的に使用するため、文字列をnullで終了する必要があるため、余分なバイトを割り当ててnullで終了します文字列。amqp_cstring_bytes()amqp_tstrlen()

str[len-1]='\0';

もう1つのオプションは、C文字列をamqp_byte_t自分でラップすることですが、とにかくそれを行うべきではないと思います:

amqp_bytes_t str;
str.len = length; //string length
str.bytes = cptr; //pointer to string

foo(..., str, ...);
于 2012-12-14T08:58:45.913 に答える
1

すべての C 文字列は、特殊文字 で終了します'\0'Nが文字列の長さよりも短い場合は、コピーを作成してその位置で終了し、N通常の C 文字列として送信できます。

于 2012-12-14T08:49:46.957 に答える