将 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',但我想知道是否有一种不那么草率的方式。
答案 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
。