2016-08-07 2 views
1
#include<iostream> 
#include<cstring> 
using namespace std; 

int main() { 
    int t; 
    cin >> t; 

    string s; 
    getline(cin, s); 
    cout << s; 

    return 0; 
} 

Как только я нажимаю клавишу ввода после ввода ввода для t, программа завершается, когда строка принимает символ новой строки в качестве входного. Что я могу сделать? Я не могу вывести что-то между этими двумя входами и ввести после того, как t является обязательным.Чтение строки от пользователя

ответ

1

Вы можете использовать getline(cin, s) дважды. Кулак будет игнорировать остальную часть первой линии, а второй будет на самом деле читать то, что вам нужно или лучше использовать cin.ignore() с соответствующими аргументами

1

Введите ключ, нажмите чтобы завершить ввод для t добавляется в буфер ввода. Таким образом, первый вход в буфере, видимый getline, равен . Введите ключ, и он считает, что вы дали пустую строку.

Используйте функцию ignore пропустить мимо новой строки:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

Вы также можете использовать два std::getline вызовы и использовать, например, std::stoi для преобразования ввода int. Или введите std::istringstream и извлеките с помощью обычного оператора >>.

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