2015-09-14 2 views
-1
string input; 
cin >> input; 
getline(cin, input); 
cout << input << endl; 

Когда я вхожу в список номеров, таких как, 0 1 2 3, первый номер получает удаляется при печати назад, так его, 1 2 3. Я знаю, 'cin >> input' неплохо поместить туда, но это единственный способ, которым программа позволяет мне вводить входные данные. У кого-нибудь есть идеи о том, как это исправить?C++ GetLine удаляет первый номер от входа

+0

Когда вы вызываете 'getline', программа должна позволять вам вводить строку; no '>>' необходимо. Удалите строку 'cin >> input;' и затем снова начните тестирование. – MicroVirus

+2

_ "но это единственный способ, которым программа позволяет мне вводить ввод" _ Eh? –

ответ

6

getline(cin, input) не прилагается к input. getline(cin, input) заменяет то, что в настоящее время хранится в input. После cin >> input, 0 хранится в input. getline(cin, input) заменяет это 01 2 3.

0

Если вход:

> 0 1 2 3 

cin >> input будет хранить 0 в input.

getline(cin, input) затем сохранит остальную часть строки: 1 2 3 и перезапишет прежнее содержимое ввода.

+1

Я не вижу, как помогут цитаты. –

+0

Без кавычек 0 1 2 3 интерпретируется как 4 строки. –

+1

С кавычками он все равно будет интерпретироваться как 4 строки. –

1

Чтобы исправить это, потерять вторую строчку:

cin >> input; 

Приведенный выше код использует оператор cin для потоковой передачи первого пробела разделителями маркер из stdin в вашей переменной input, эффективно «есть» первый входной маркер который появляется на stdin, потому что следующая строка кода делает две вещи: он отбрасывает все, что находится в вашей переменной input; то вызов getline() считывает оставшуюся часть данных по stdin в вашу переменную input.

Предполагая, что вы включили iostream и string:

#include <iostream> 
#include <string> 

и используют пространство имен Std, либо с помощью классификаторов по мере необходимости, либо путем с «помощью» заявления, такие как

using namespace std; 

то вы обнаружите, что:

string input; 
getline(cin, input); 
cout << input << endl; 

делает точно wh на вас хотели это сделать.