分段 追加和读取二进制文件时出错
Segmentation Fault while appending and reading a binary file
我正在制作一个登录系统,它将用户名和密码保存在二进制文件中因此,如果匹配任何用户名或密码,则应显示"匹配!它适用于 txt 文件,但在二进制模式下会出现分段错误
我试图将 f.read(( 放在循环之外并手动读取它。 我还尝试在 !f.eof(( 变为 true 时终止循环但在所有情况下都会发生相同的问题
这是代码
#include<iostream>
#include<fstream>
using namespace std;
class Login {
public:
string username;
int pass;
Login() {
}
Login(string u,int p) {
username = u;
pass =p;
}
};
int main() {
fstream f("sarah.bin",ios::in|ios::app|ios::binary);
if(!f) cout<<"error"<<endl;
//adding data,take data from user
Login l("ahmed",123),k;
f.write((char*)&l,sizeof(l));
bool logged = false;
string s = "ahmed";
int p = 123;
f.seekg(0,ios::beg);
//verification
while(!f.eof() && f.read((char*)&k,sizeof(l))) {
if(k.pass==p && k.username == s) {
cout<<"logged";
logged = true;
break;
}
}
if(!logged)
cout<<"not matched";
f.close();
}
它没有给出预期的结果,而是给出分割错误,有时根本没有输出。
实际上问题是:我正在使用导致错误的非 POD 数据类型 .i.e 字符串所以我所做的解决方案是用字符数组替换字符串。另一种解决方案是将其写入 TXT 文件中。
相关文章:
- 正在读取二进制文件(is_open)
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- Android 在编译二进制文件时重建静态库
- 在 C++ 中将双精度变量写入二进制文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- C++:实际上不是从二进制文件中读取
- 如何从二进制文件中的给定符号中获取调用程序图
- 将内部带有矢量的结构保存/读取到二进制文件中
- 编译多个C++文件.调用二进制文件以运行代码
- 如何使用位字段将数据从二进制文件复制到结构中?
- uint8_t同一二进制文件的不同十进制值
- 分段 追加和读取二进制文件时出错
- 使用 ifsream 和字符串流复制二进制文件时出错
- 用c++读取二进制文件时出错
- 从二进制文件c++读取值时出错
- 使用C++在Visual Studio中读取二进制文件时出错
- 在boost.Python中将Python二进制文件转换为C++二进制文件时出错