J'ai créé un programme simple qui écrit un objet dans un fichier, puis lit ce qui est écrit dans le fichier. Mon problème est quand j'écris dans le fichier les valeurs non désirées sont écrites dans le fichier et quand je récupère les données, ces valeurs sont également récupérées, ce que je ne veux pas.Ecriture/Lecture à partir d'un fichier en C++
Voici ce que je l'ai fait:
Mise en œuvre Gestion des fichiers
//File Handling class Implementation
File::File(){}
string File::writeObject(Person obj)
{
ofstream outFile("myFile.txt", ios::out);
if(!outFile) {
cout << "No File" << endl;
}
outFile.write(reinterpret_cast<const char *> (&obj), sizeof(obj));
return "Done";
}
Person.h:
//Person.H
class Person {
private: string name;
public: Person();
public: void setName(string name);
public: string getName();
};
Application principale: using namespace std;
int main(int argc, char* argv[])
{
Person p1;
p1.setName("Shehan");
File f1;
cout << f1.writeObject(p1) << endl; //writes to the file
ifstream readFile("myfile.txt",ios::in); creates object to read from file
string name; // creates variable to hold the value
readFile >> name; reads from file
cout << name << endl; //prints the value
system("pause");
return 0;
}
Je pense que "shehan" devrait être écrit dans le fichier, mais ce qui est écrit dans le fichier est:
0ÂÒ Shehan ÌÌÌÌÌ'þ¨
Quand je relis:
Ce qui semble être le problème ici?
Vous écrivez le contenu d'un objet non-POD. Cela inclut toutes les variables membres de l'objet _et_ ses sous-objets. Que pensez-vous qu'il va se passer quand une de ces variables membres est un pointeur? –
Je ne vous ai pas vraiment là. –
@ Shehan.W Il essaie de faire remarquer que la représentation interne d'un objet est _not_ text, ou tout ce que vous pouvez éventuellement relire et exploiter. Pensez-y un instant: un 'std :: string' avec 1000 caractères aura toujours un' sizeof' considérablement moins de 100. Où sont tous ces caractères? –