2017-09-26 60 views
-3

我已经知道这将被标记为重复,但我已经尝试了每个可以找到的解决方案,然后尝试了我自己的解决方案,但都没有解决。错误消息告诉我它在输入后需要一个“)”,但我需要它将正在读取的信息写入备份文件。任何帮助,将不胜感激。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); 
    } 
+0

getline(input,d.userName);'前面的std :: istream&'是什么? – user463035818

+4

所有的成员变量都是MAXIMUM_DATA字符串的*数组*。它们不是'MAXIMUM_DATA'字符串。并且你不真的*调用* getline,它看起来更像你声明它,用'std :: istream&'作为返回类型。你“声明”这个函数的方式是无效的,导致你的构建错误。也许你需要[找几本好书籍阅读](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –

+0

您可能需要将数组转换为单个变量,然后有'Data'的'std :: vector'。 –

回答

0

你们其中一个问题是,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; 

看起来这是你打算做。