1

将未终止的char* 转换为 std::string的好方法是什么?例如,在完成以下操作后,

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

我有接收缓冲区的地址,以及它包含的字节数,我想将它连接到std::string。(FWIW,我不使用多字节字符集。)后备方法是使_recv_bufferrecv_buffer_len大一个字节,并设置_recv_buffer[bytes] = '\0',但我想知道是否有不那么草率的方法.

4

3 回答 3

5

std::string有一个append方法,它接受一个指向字符串的指针和一个长度:

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);which 应该可以解决问题。

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

你确定&_recv_buffer吗?如果您的缓冲区是 achar[]或类似的东西,它必须是_recv_buffer.

于 2013-07-25T20:58:26.073 回答