#include <iostream>
using namespace std;
int main()
{
int N;
int T;
cin>>N;
struct key {
std::string namek;
int szam;
int szat;
std::string kol;
};
key kert[N];
for (int i=0; i<N; i++) {
int k=i;
cin.ignore(100, ' ');
getline(cin, kert[k].namek);
cin>>kert[k].szam;
cin.ignore(100,' ');
cin>>kert[k].szat;
cin.ignore(100, ' ');
getline(cin, kert[i].kol);
}
for (int i=0; i<N; i++) {
int k=i;
cout<<kert[i].namek;
}
Я хочу прочитать в структуре 'kert', но моя программа только читает в kert [0], а затем возвращается. Я не знаю, где я испортился, потому что я использовал getline для строк и cin для ints. Я знаю, что cin оставляет «\ n» в буфере и пробовал читать фиктивные символы после cin, я также пробовал cin.ignore (как в коде), но ничего не помогает. Где я испортил?C++ getline и cin reading
Вы игнорируете пробелы, а не новые строки. 'key kert [N];' массивы переменной длины не поддерживаются в стандартном C++ (AFAIK) и что вы добавляете 4 в 'N' в свой первый цикл? –
@bkVnet Поддерживается длина массива переменных. – pingul
@pingul как расширение GCC, да – Rakete1111