2015-10-28 3 views
-1

Вот сегмент кода, который я работаю над:КИН пропуска строки

std::cout << "Enter title of book: "; 
std::string title; 
std::getline(std::cin, title); 
std::cout << "Enter author's name: "; 
std::string author; 
std::getline(std::cin, author); 
std::cout << "Enter publishing year: "; 
int pub; 
std::cin >> pub; 
std::cout << "Enter number of copies: "; 
int copies; 
std::cin >> copies; 

Вот вывод из этого раздела, когда он работает (добавлены цитаты):

"Enter title of book: Enter author's name": 

Как Я исправить это, чтобы я мог войти в заголовок?

+0

(в настоящее время) два ответа предоставляют решения для очень вероятной проблемы, но вопрос отсутствует [требование полноты MCVE] (http://stackoverflow.com/help/mcve) и на него нельзя ответить определенность. – user4581301

+0

Возможный дубликат [cin и getline passipping input] (http://stackoverflow.com/questions/10553597/cin-and-getline-skipping-input) – Mykola

ответ

1

Я думаю, что у вас есть какой-то вклад, прежде чем вы нас не покажете. Предположим, вы можете использовать std::cin.ignore(), чтобы игнорировать любые новые строки, оставшиеся от std::cin.

std::string myInput; 
    std::cin >> myInput; // this is some input you never included. 
    std::cin.ignore(); // this will ignore \n that std::cin >> myInput left if you pressed enter. 

    std::cout << "Enter title of book: "; 
    std::string title; 
    std::getline(std::cin, title); 
    std::cout << "Enter author's name: "; 

Теперь это должно сработать.

+0

Это сработало. Теперь я знаю. Благодарю. – Ricca

0

getline - это символ новой строки. Однако чтение с чем-то вроде std::cin оставляет строку новой строки во входном потоке. Поскольку this рекомендует при переключении с пробела, разделенного на ввод с разделителями новой строки, вы хотите очистить все строки новой строки от входного потока, выполнив cin.ignore: например, cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');. (Конечно, я предполагаю, что вы оставили cin до getline, когда вы переводили код в MCVE).

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