2017-09-26 3 views
-3

Je sais déjà que cela sera marqué comme doublon, mais j'ai déjà essayé toutes les solutions que j'ai pu trouver, puis la mienne, qui n'a pas fonctionné. Les messages d'erreur ne cessent de me dire qu'il attend un ")" après la saisie, mais j'en ai besoin pour écrire les informations qu'il lit dans le fichier de sauvegarde. Toute aide serait appréciée.std :: getline (entrée, d.info) ne fonctionne pas

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

qu'est ce que 'std :: istream &' devant 'getline (entrée, d.userName);' ?? – user463035818

+4

Toutes vos variables membres sont des * tableaux * de chaînes MAXIMUM_DATA. Ce ne sont pas des chaînes de caractères 'MAXIMUM_DATA'. Et vous n'appelez pas vraiment * getline, il ressemble plus à vous * le déclarez *, avec 'std :: istream &' comme type de retour. Et la façon dont vous "déclarez" la fonction est invalide, ce qui conduit à vos erreurs de construction. Peut-être que vous avez besoin de [trouver un couple de bons livres pour débutants à lire] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –

+0

Vous pouvez convertir les tableaux en variables simples, puis avoir un 'std :: vector' de' Data'. –

Répondre

0

L'un de vos problèmes est que le std::getline ressemble plus à une déclaration de fonction. Remplacez par:

getline(input, /*...*/); 

Si vous émulez une base de données, vous pouvez utiliser une table d'enregistrements.

Vous pouvez définir un enregistrement comme:

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); 
}; 

base de données Vous pouvez être aussi simple que:

std::vector<Data_Record> database; 

On dirait que c'est ce que vous l'intention à faire.