簡體   English   中英

boost:read_until“\\ n”讀到“”

[英]boost: read_until “\n” reads until “ ”

我正在使用boost :: asio開發一個tcp客戶端來處理傳入的文本,以“\\ n”結尾。 但是,當我發送包含空格的文本時,它會在第一個空格出現后丟棄所有字符。 我已經確認我發送的文字已經完成了。

這是我的代碼:

boost::system::error_code error; 
boost::asio::streambuf buffer; 
boost::asio::read_until( *socket, buffer, "\n", error ); 
std::istream str(&buffer); 
std::string s; 
str >> s; 

使用std::getline而不是>> ,這是在遇到空格時停止閱讀:

std::istream str(&buffer); 
std::string s; 
std::getline(str, s);
 std::istream str(&buffer); 
 std::string s; 
 str >> s; 

如果這是你檢查緩沖區內容的方式,那你就搞錯了。 這將讀取std::stringstd::string ,該字符串讀取第一個空格字符。 這就是std::string operator<<作用。 如果你繼續做>> s你會得到你的信息的其余部分。 相反,您可以使用std::getline來檢索整個內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM