boost:read_until"\n"读到""

Ped*_*dro 4 c++ iostream boost-asio

我正在使用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; 
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 11

使用std::getline而不是>>,这是在遇到空白时停止阅读:

std::istream str(&buffer); 
std::string s; 
std::getline(str, s);
Run Code Online (Sandbox Code Playgroud)