ich diesen Code zu schreiben habenC++ ifstream kann nicht lesen Zeichenfolge, und immer Fehler beim Lesen char
cout << "titre = ";
cin >> livre.titre;
cout << "isbn = ";
cin >> livre.isbn;
cout << "auteur = ";
cin >> livre.auteur;
cout << "annee = ";
cin >> livre.annee;
cout << "editeur = ";
cin >> livre.editeur;
cout << "prix = ";
cin >> livre.prix;
cout<<"===================="<<endl;
ofstream write("livres",ios::app);
write.write ((char *)&livre, sizeof livre);
write.close();}
und diese von ihm zu lesen, in Datei:
void affiche()
{
livres livre;
ifstream read ("livres");
read.read ((char *)&livre,sizeof livre);
while (read)
{cout << "num : "<<livre.num<<" | isbn : "<< livre.isbn<<" | titre : "<<livre.titre<<" | auteur : "<<livre.auteur<<" | editeur : "<<livre.editeur<<" | annee : "<<livre.annee<<" | prix : "<<livre.prix<<endl;
read.read ((char *)&livre, sizeof livre);
}read.close();
}
das Problem, dass, wenn ich machen die Variablen als Zeichen wie das zum Beispiel:
char titre[3];
char auteur[3];
char editeur[3];
i in der ersten cout Saiblings erhalten alle 3 Zeichen, zum Beispiel, wenn ich fülle titer mit 'abc' und 'auteur' mit 'def' und editeur mit 'ghi' ich bekomme in den cout für titer: abcdefghi, und in der cout des auteur defghi, und in der letzten: ghi. Das Problem tritt nicht mit int-Variablen auf. und wenn ich diese Variablen in Zeichenfolge ändern, funktioniert der Compiler gut, aber die Exe bleibt in der ersten Zeichenfolge cout.
ich hoffe, dass Sie helfen können.
der vollständige Code:
class livres{
public:
void creer() {
cout << "titre = ";
cin >> livre.titre;
cout << "isbn = ";
cin >> livre.isbn;
cout << "auteur = ";
cin >> livre.auteur;
cout << "annee = ";
cin >> livre.annee;
cout << "editeur = ";
cin >> livre.editeur;
cout << "prix = ";
cin >> livre.prix;
ofstream write("livres",ios::app);
write.write ((char *)&livre, sizeof livre);
write.close();}
void affiche() {
livres livre;
ifstream read ("livres");
read.read ((char *)&livre,sizeof livre);
while (read)
{cout << "num : "<<livre.num<<" | isbn : "<< livre.isbn<<" | titre : "<<livre.titre<<" | auteur : "<<livre.auteur<<" | editeur : "<<livre.editeur<<" | annee : "<<livre.annee<<" | prix : "<<livre.prix<<endl;
read.read ((char *)&livre, sizeof livre);
}read.close(); }
private:
int isbn;
char titre[3];
char auteur[3];
char editeur[3];
int annee;
int prix;
int num;
};
int main()
{
livres livre;
livre.creer();
livre.affiche();
return 0;
}
'char titre [3];' ist nur groß genug, um _zwei_ druckbare Zeichen zu speichern. –
Die Klasse 'Livres' hat keine Variable namens' Livre', daher sollten Kompilierungsfehler auftreten. Möglicherweise schreiben Sie auch Müll in die 'Livres'-Datei, da' & livre' Ihnen eine Adresse der Variable 'livre' gibt. – ForceBru
Livre ist ein Objekt in der Klasse Livres, und ich bekomme keine Kompilierung Fehler, der Code funktioniert gut ohne Zeichen (mit nur ganzen Zahlen und mit einem char). – ARDV