C ++将未终止的char *连接到std :: string

时间:2013-07-25 20:55:43

标签: c++ string character delimiter

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

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

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

3 个答案:

答案 0 :(得分:4)

std::string有一个append方法,它既指向字符串又指长度:

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

对你:

myString.append(_recv_buffer, bytes);

编辑说明:注意以_开头的标识符。它们保留供实施使用。

答案 1 :(得分:1)

使用str.append(recv_buffer, bytes);可以解决这个问题。

答案 2 :(得分:1)

std::string data(&_recv_buffer, &_recv_buffer + bytes);

您确定&_recv_buffer吗?如果您的缓冲区为char[]或类似内容,则必须为_recv_buffer