我在使用c套接字的C++編寫程序。我需要一個函數來接收我想返回一個字符串的數據。我知道這是行不通的:C++從套接字讀取到std :: string
std::string Communication::recv(int bytes) {
std::string output;
if (read(this->sock, output, bytes)<0) {
std::cerr << "Failed to read data from socket.\n";
}
return output;
}
因爲read()
*函數需要一個字符數組指針參數。這裏返回一個字符串的最好方法是什麼?我知道我理論上可以將數據讀入char數組,然後將其轉換爲字符串,但這對我來說似乎很浪費。有沒有更好的辦法?
*我其實並不在乎自己使用的是其他的東西read()
如果有一個更合適的替代
這裏是所有的代碼上引擎收錄,應在一週內到期。如果我不通過則有一個答案,我會重新發布它:http://pastebin.com/HkTDzmSt
[更新]
我使用&output[0]
也嘗試過,但得到的輸出包含以下內容:
jello!
[insert a billion bell characters here]
「jello!」是將數據發送回套接字。
c_str()是const,你不能這樣做。只需讀入一個緩衝區,然後複製到一個字符串。 – billz
@billz正確,我收回我的建議。 – Borgleader
這是甚至適當的形式?如果不是,我應該採取什麼不同的做法? – 735Tesla