std :: getline(输入,d.info)不起作用

std::getline(input, d.info) not working

本文关键字:info 不起作用 输入 getline std      更新时间:2023-10-16

我已经知道这将被标记为重复,但是我已经尝试了我能找到的所有解决方案,然后是我自己的解决方案,而这些解决方案却无效。错误消息不断告诉我,输入后它会期望")",但是我需要它写入正在读取的备份文件的信息。任何帮助将不胜感激。

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;

看起来这是您打算做的