2013-04-11 2 views
1

Я новичок в C++. Я использую Cygwin и eclipse в окне 7, и я пытаюсь написать программу, чтобы попросить пользователя ввести строку и просто распечатать ее. У меня есть код ниже.C++ getline (cin, str) дает мне дополнительную строку

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    string mystr; 
    cout << "What's your name? "; 
    getline (cin, mystr, '\n'); 
    cout << "Hello " << mystr << ".\n"; 
    return 0; 
} 

Я также попробовать:

getline(cin, mystr); 

Они оба дали мне из положить, как показано ниже.

выход:

What's your name? nick 
Hello nick 
. 

Почему полная остановка переходит к следующей строке? Может кто-то сказать, что случилось, и научить меня, как это исправить.

+4

Я просто пробовал это сам, и я получил вывод 'Hello nick.', за которым следует новая строка, если используется' getline (cin, mystr, '\ n'); 'Я использую gcc 4.7 – OGH

+0

Возможно, cygwin не правильно делая конверсии окончания строки. – jamesdlin

+0

вместо этого следует использовать MinGW? – user2146963

ответ

0

В GCC 4.6.3

getline (cin, mystr); 

и

getline (cin, mystr, '\n'); 

оба печать строку, как вы ожидаете.

+0

вы можете использовать фиктивный getchar(), чтобы избежать такого поведения в вашем компиляторе. – Sunny

+0

после функции getline() напишите getchar() и посмотрите, помогает ли она. – Sunny

+0

это дает мне ошибку ... – user2146963

Смежные вопросы