std :: cin.getline不等待Input

时间:2017-09-04 08:27:28

标签: c++ console std cin getline

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附加控制台)

1 个答案:

答案 0 :(得分:0)

长话短说,你的std::cin istream无效。 std::cin.getline会返回对std::istream的引用,代表std::cin。回溯std::basic_ios导致的继承层次结构,std::cin有一个operator bool重载,如果流上的badbiterrorbit,则会返回false已经确定。

我打赌你的控制台,因为没有以传统的方式设置,没有正确地附加到std::cin