[英]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.