#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
возвращает anint
, а не achar
, чтобы вернуть специальный символ EOF . Для правильной обработки требуется некоторое массирование.