none
Зависает getline() и в debug и в release и здорово подвешивает приложение. RRS feed

  • Вопрос

  • У меня, в консольном приложении Visual C++, зависает getline() при попытке ввода с клавиатуры. Исходный код следующий. В заголовочном файле MyHeader.h определяю константу:

    // Максимальная длина сообщения
    const int MAX_MSG_LEN = 1024;
    В том файле, где использую getline() пишу следующий код:
    #include "MyHeader.h"
    . . . . . . . . . . . . . .
    
    // Буфер для вводимого сообщения.
    char messageToServer[MAX_MSG_LEN + 1];
    memset(messageToServer, 0, sizeof(messageToServer));
    
    // Ожидает пользовательского ввода.
    cin.getline(messageToServer, MAX_MSG_LEN);
    
    // Показать, что ввёл.
    cout  << messageToServer << endl;
    Когда запускается приложение и я пытаюсь выполнить ввод с клавиатуры, то всё зависает. Так же пробовал делать вот так вот:
    std::string messageToServer;
    std::getline(std::cin, messageToServer, ' ');
    Точно так же всё зависает при попытке ввода с клавиатуры. В солюшене у меня два проекта - клиент и сервер (оба консольные приложения C++). Запускаются оба сразу, но фокус получает окно сервера. И, поэтому, что бы в окне клиента появился приглашающий курсор для ввода, в нём нужно щёлкнуть мышью. Курсор появляется и начинает мигать. Но вот при вводе первого символа приложение-клиент зависает зависает. Почему?


    15 июня 2014 г. 10:27

Ответы

  • Какой-то экзотический способ ввода Вы выбрали. Вот так нельзя?

    string str;
    cin >> noskipws >> str;


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа Purple_Apple 15 июня 2014 г. 14:08
    15 июня 2014 г. 10:41