[英]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::string
的std::string
,該字符串讀取第一個空格字符。 這就是std::string operator<<
作用。 如果你繼續做>> s
你會得到你的信息的其余部分。 相反,您可以使用std::getline
來檢索整個內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.