[英]C++ concatenating an unterminated char* to std::string
将未终止的 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' ,但是我想知道是否有一种更宽松的方法。
std::string
有一个append
方法,该方法同时使用指向字符串的指针和长度:
string& append (const char* s, size_t n);
为了你:
myString.append(_recv_buffer, bytes);
编者注:请注意以_
开头的标识符。 它们保留供实现使用。
使用str.append(recv_buffer, bytes);
这应该可以解决问题。
std::string data(&_recv_buffer, &_recv_buffer + bytes);
您确定&_recv_buffer
吗? 如果您的缓冲区是char[]
或类似名称,则必须为_recv_buffer
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.