std :: getline(input,d.info)不起作用
问题描述:
我已经知道这将被标记为重复,但我已经尝试了每个可以找到的解决方案,然后尝试了我自己的解决方案,但都没有解决。错误消息告诉我它在输入后需要一个“)”,但我需要它将正在读取的信息写入备份文件。任何帮助,将不胜感激。std :: getline(input,d.info)不起作用
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;
看起来这是你打算做。
getline(input,d.userName);'前面的std :: istream&'是什么? – user463035818
所有的成员变量都是MAXIMUM_DATA字符串的*数组*。它们不是'MAXIMUM_DATA'字符串。并且你不真的*调用* getline,它看起来更像你声明它,用'std :: istream&'作为返回类型。你“声明”这个函数的方式是无效的,导致你的构建错误。也许你需要[找几本好书籍阅读](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –
您可能需要将数组转换为单个变量,然后有'Data'的'std :: vector'。 –