Programa C ++ falha ao ler o objeto do arquivo de acesso aleatório
Eu tenho o seguinte User.h que contém vários atributos (seqüências de caracteres). User.cpp possui todas as definições.
//User.h
#ifndef USER_H
#define USER_H
#include<iostream>
#include <cstring>
using namespace std;
class User{
string username;
public:
User();
string getUsername() const;
void setUsername(string);
};
#endif
Estou usando outra classe, "Arquivo" para inserir novos usuários / exibir usuários de um arquivo .dat acessado aleatoriamente
//File.h
#ifndef FILE_H
#define FILE_H
#include "User.h"
class File{
public:
void loadUser();
bool addUser(User&);
};
#endif
Definições de classe de arquivo
//File.cpp
#include<cstring>
#include<iostream>
#include<iomanip>
#include<fstream>
#include "User.h"
#include "File.h"
using namespace std;
User tempUser;
fstream usersFile;
void File::loadUser(){
usersFile.open("users.dat", ios::in | ios::binary);
usersFile.seekg(0);
// commenting the following lines prevented the issue
usersFile.read(reinterpret_cast<char *>(&tempUser), sizeof(tempUser));
cout<<tempUser.getUsername().c_str();
usersFile.close();
}
bool File::addUser(User& user){
usersFile.open("users.dat", ios::out | ios::ate | ios::binary);
// no issue when writing to file
usersFile.write( reinterpret_cast<const char *>(&user), sizeof(user));
usersFile.close();
cout<<"User added";
}
Estou recebendo o problema acima mencionado ao executar. Nenhum problema de compilação embora.
Existe algum problema ao lidar com objetos que possuam "atributos de cadeia" no seu processamento?
Por favor ajude