我有以下User.h,它包含幾個屬性(字符串)。 User.cpp具有所有的定義。當從隨機訪問文件中讀取對象時,C++程序崩潰
//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
我使用另一個類, 「文件」,從.dat文件隨機訪問的
//File.h
#ifndef FILE_H
#define FILE_H
#include "User.h"
class File{
public:
void loadUser();
bool addUser(User&);
};
#endif
文件類定義
//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";
}
我插入新用戶/用戶視圖運行時遇到上述問題。雖然沒有編譯問題。
處理內部具有「字符串屬性」的對象時,是否有任何問題?
請幫