C++获取线和CIN阅读

C++ getline and cin reading

本文关键字:CIN 阅读 获取 C++      更新时间:2023-10-16
#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 做整数。我知道 cin 将""留在缓冲区中并尝试在 cin 之后读取虚拟字符,我也尝试了 cin.ignore (如代码中所示),但没有任何帮助。我哪里搞砸了?

我做了一些游戏,更改忽略允许我在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;
}