Как получить cin несколько раз в разных строках?

#c #cin

#c #cin

Вопрос:

Я хочу получить ввод дважды с одной переменной строкой и другим символом, но всегда появляется ошибка компиляции, как мне решить эту проблему. Я пробовал cin.clear(); но, похоже, в этом случае это не работает.

 #include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <string>
using std::string;
using std::getline;

int main(){
    string name;
    cout << "Please input a string." << endl;
    getline (cin, name);
    cout << "Hello, there, "<< name  <<".n";
    char ccc;
    cout << "Please input a character." << endl;
    getline (cin, ccc);
    cout << "This is a alphabet:" << ccc << endl;
    return 0;
}
 

Я ожидаю, что результат будет выглядеть так:

 Please input a string.
John
Hello, there, John.
Please input a character.
c
This is a alphabet:c
 

Комментарии:

1. В чем ошибка?

2. getline (cin, ccc); не может использоваться для ввода одного символа.

Ответ №1:

Я использовал cin.ignore(); раньше. Он должен очистить буфер. Также char должен использовать getchar вместо getline.

Ответ №2:

Не существует версии getline() , которая принимает a char в качестве второго аргумента. Вместо этого вам, вероятно, нужна версия, которая принимает a char* . Вам нужно будет изменить свой код, чтобы прочитать строку, содержащую один символ.

Ответ №3:

Попробуйте getchar() вместо getline() на втором.

Комментарии:

1. Обратите внимание, что getchar возвращает an int , а не a char , чтобы вернуть специальный символ EOF . Для правильной обработки требуется некоторое массирование.