строка — как использовать & quot; получает & quot; функция в C ++ после предыдущего ввода?

Я пытался ввести данные с gets() функция, но всякий раз, когда выполнение программы добраться до залогового удержания с getsэто игнорирует.

Когда я использую gets() без предыдущего ввода данных, он работает правильно. Но когда я использую его после ввода данных, возникает проблема.

Вот код, в котором он используется после предыдущего ввода данных (поэтому при выполнении я не могу вводить данные в строку):

int main() {
char str[255];
int a = 0;
cin >> a;
if(a == 1) {
gets(str);
cout << "\n" << str << endl;
}
}

Как я мог это исправить?

NB: то же самое происходит с cin.getline

2

Решение

После

cin >>a

когда вы вводите a и введите, есть также \n персонаж оставлен cinПоэтому, когда вы используете cin.getline() или же gets(str) он будет читать этот символ новой строки.

попробуйте следующее:

cin >>a;
cin.ignore(); //^^this is necessary
if(a==1){
gets(str);
}

Вам лучше использовать C ++ способ чтения ввода:

cin >> a;
cin.ignore();
string str;
if (a == 1)
{
getline(cin, str);
}
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]