#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;
}
我想读一下&#39; kert&#39; struct但我的程序只读入kert [0]然后返回。我不知道我搞砸了哪里,因为我使用了getline for strings和cin for int。我知道cin离开了&#39; \ n&#39;在缓冲区和cin之后尝试阅读虚拟字符,我也尝试了cin.ignore(如代码中所示),但没有任何帮助。我在哪里陷入困境?
答案 0 :(得分:1)
我做了一些游戏并改变了忽略允许我输出kert中的所有名字。现在忽略查找结束字符并且仅被调用以抵消cin的。
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
struct key {
std::string namek;
int szam;
int szat;
std::string kol;
};
key kert[N];
cin.ignore(100, '\n');
for (int i=0; i<N; i++) {
getline(cin, kert[i].namek);
cin>>kert[i].szam;
cin>>kert[i].szat;
cin.ignore(100, '\n');
getline(cin, kert[i].kol);
}
for (int i=0; i<N; i++) {
cout<<endl<<kert[i].namek<<endl;
}
return 0;
}