C ++ getline .. я не могу не читать клавишу ВВОД - PullRequest
0 голосов
/ 14 февраля 2012
#include <iostream>
using namespace std;

int main()
{
    char user_name[50];
    cout << "what is your name?" << endl;
    cin.getline (user_name, 50, '\n');
    cout << "hello, " << user_name << ", how are you today?" << endl;
}

Мне нужен 2-й cout, все в одной строке, но он читает клавишу ввода, даже если я поставил разделитель. как я могу это исправить?

hello, johnny walker
, how are you today?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

Помимо пропущенных точек с запятой в строке 1 и 3, в вашем коде нет ничего плохого.Всегда ли он ломается перед запятой?Возможно, вы захотите взглянуть на следующую ссылку и попробовать некоторые из приведенных здесь советов: http://www.cplusplus.com/forum/general/1477/

0 голосов
/ 14 февраля 2012

Он отлично работает на моем Mac OS Lion, как и должно.Не могли бы вы предоставить больше информации о вашей среде?

hello, johnny walker, how are you today?
0 голосов
/ 14 февраля 2012

Если это ваш реальный код, он должен выполняться именно так, как вы хотите.Я просто запустил его на своем сервере Fedora, и он работал отлично, все отображалось в одной строке, как вы и просили.

Чтобы избавить вас от лишних хлопот и дать вам возможность сохранить две части имени пользователя по отдельностидля лучшей обработки, вы можете попробовать это:

#include <iostream>
using namespace std;

int main()
{
    string first_name, last_name;
    cin >> first_name >> last_name;
    cout << "Hello " << first_name << " " << last_name << " how are you?" << endl;
}

, но я просто даю вам это, так что избавьте вас от getline, так как вы в замешательстве - на самом деле это должно (и работает) хорошо также: р

...