C++ std::getline(输入,d.info)不工作

C++ std::getline(输入,d.info)不工作,c++,input,getline,C++,Input,Getline,我已经知道这将被标记为重复,但我已经尝试了我能找到的每一个解决方案,然后我自己的,没有一个有效。错误消息不断告诉我它需要一个after输入,但我需要它将正在读取的信息写入备份文件。任何帮助都将不胜感激 class Data{ public: const unsigned static int MAXIMUM_DATA = 4100u; const static int x = 0; string userName[MAXIMUM_DATA] = {}; string nickName[M

我已经知道这将被标记为重复,但我已经尝试了我能找到的每一个解决方案,然后我自己的,没有一个有效。错误消息不断告诉我它需要一个after输入,但我需要它将正在读取的信息写入备份文件。任何帮助都将不胜感激

class Data{
public:
    const unsigned static int MAXIMUM_DATA = 4100u;
const static int x = 0;
string userName[MAXIMUM_DATA] = {};
string nickName[MAXIMUM_DATA] = {};
string role[MAXIMUM_DATA] = {};
string fName[MAXIMUM_DATA] = {};
string lName[MAXIMUM_DATA] = {};
string email[MAXIMUM_DATA] = {};
friend std::istream& operator>>(std::istream& input, Data& d);
};

std::istream& operator>>(std::istream& input, Data& d){
std::istream& getline(input, d.userName);
std::istream& getline(input, d.role);
std::istream& getline(input, d.fName);
std::istream& getline(input, d.lName);
std::istream& getline(input, d.nickName);
std::istream& getline(input, d.email);
return input;
}

Data d;
    while(myfile >> d){
        database.push_back(d);
    }

其中一个问题是std::getline看起来更像一个函数声明。改为:

  getline(input, /*...*/);
如果要模拟数据库,可能需要使用记录表

您可以将记录定义为:

class Data_Record
{
public:
string userName;
string nickName;
string role;
string fName;
string lName;
string email;
friend std::istream& operator>>(std::istream& input, Data_Record& dr);
};
您可以将数据库简化为:

std::vector<Data_Record> database;

看起来这就是你想要做的

在getlineinput前面的std::istream&是什么??所有成员变量都是最大_数据字符串的数组。它们不是最大\u数据字符的字符串。而且您并没有真正调用getline,它看起来更像是用std::istream&作为返回类型来声明它。并且声明函数的方式无效,导致生成错误。也许您需要?您可能需要将数组转换为单个变量,然后获得数据的std::vector。