从here取得示例。
相关守则:
char line[chat_message::max_body_length + 1];
while (std::cin.getline(line, chat_message::max_body_length + 1))
{
chat_message msg;
msg.body_length(std::strlen(line));
std::memcpy(msg.body(), line, msg.body_length());
msg.encode_header();
c.write(msg);
}
c.close();
t.join();
应用程序会立即退出而无需等待我发送聊天消息。 我没有修改代码期望使用Windows而不是控制台应用程序(我仍然使用Alloc& AttachConsole附加控制台)
答案 0 :(得分:0)
长话短说,你的std::cin
istream无效。 std::cin.getline
会返回对std::istream
的引用,代表std::cin
。回溯std::basic_ios
导致的继承层次结构,std::cin
有一个operator bool
重载,如果流上的badbit
或errorbit
,则会返回false已经确定。
我打赌你的控制台,因为没有以传统的方式设置,没有正确地附加到std::cin
。