Итак, я прочитал строку, используя cin.getline (str, 10, 'h'), где, как вы можете видеть, я использовал собственный разделитель 'h' и хочу прочитать максимум 9 символов. После этого я использую cin >> n, чтобы прочитать целое число в моей переменной int n.
#include <iostream>
using namespace std;
int main() {
int n;
char str[100];
cin.getline(str, 10, 'h');
cout<<str<<'-'<<endl;
cout<<"Enter a number:";
cin>>n;
cout<<n;
return 0;
}
Предположим, я передал следующий ввод
2 3 pl32
, который является '\ n', за которым следует "2 3 pl32".
Я ожидаю, что getline прочитает строку "\n2 3 pl"
, а затем cin прочитает целое число 32. Но это не то, что произошло.
Фактический вывод показал, что cin считал значение мусора:
2 3 pl-
Enter a number:0
Редактировать: Хорошо, теперь я понял. Getline установил failbit
, вот что вызвало проблему. Проблема решена.