1

終了していないchar* を std::string変換する良い方法は何ですか? たとえば、次の処理が完了すると、

int bytes = recv(_socket, &_recv_buffer, recv_buffer_len, 0)

受信バッファーのアドレスとそれに含まれるバイト数があり、それをstd::stringに連結したいと考えています。(FWIW、私はマルチバイト文字セットを扱っていません。) フォールバックは、 _recv_buffer をrecv_buffer_lenよりも 1 バイト大きくし、 _recv_buffer[bytes] = '\0'を設定することですが、もっとずさんな方法があるかどうか疑問に思いました.

4

3 に答える 3

5

std::stringappend文字列へのポインタと長さの両方を取るメソッドがあります。

string& append (const char* s, size_t n);

あなたのために:

myString.append(_recv_buffer, bytes);

編集者注: で始まる識別子に注意してください_。それらは実装で使用するために予約されています。

于 2013-07-25T20:57:37.527 に答える
1

str.append(recv_buffer, bytes);トリックを行う必要があるものを使用してください。

于 2013-07-25T20:57:56.650 に答える
1
std::string data(&_recv_buffer, &_recv_buffer + bytes);

そして、あなたは確信してい&_recv_bufferますか?バッファがchar[]または類似のものである場合、それは でなければなりません_recv_buffer

于 2013-07-25T20:58:26.073 に答える