gpt4 book ai didi

c++ - 写入二进制文件

转载 作者:可可西里 更新时间:2023-11-01 17:08:17 24 4
gpt4 key购买 nike

#include <iostream>
#include <fstream>

using namespace std;

class info {

private:
char name[15];
char surname[15];
int age;
public:
void input(){
cout<<"Your name:"<<endl;
cin.getline(name,15);
cout<<"Your surname:"<<endl;
cin.getline(surname,15);
cout<<"Your age:"<<endl;
cin>>age;
to_file(name,surname,age);
}

void to_file(char name[15], char surname[15], int age){
fstream File ("example.bin", ios::out | ios::binary | ios::app);
// I doesn't know how to fill all variables(name,surname,age) in 1 variable (memblock)
//example File.write ( memory_block, size );

File.close();
}

};

int main(){

info ob;
ob.input();

return 0;
}

我不知道如何将超过 1 个变量写入文件,请帮忙,我提供了一个示例 ;) 也许有更好的方法写入文件,请帮助我,这对我来说很难解决。

最佳答案

对于文本 文件,您可以使用类似的<< 轻松地每行输出一个变量。到你使用的std::cout .

对于二进制 文件,您需要使用 std::ostream::write() ,它写入一个字节序列。为您age属性,你需要 reinterpret_cast这到const char*并写入尽可能多的字节来保存 int为您的机器架构。请注意,如果您打算在另一台机器上读取此二进制日期,则必须使用 word size。和 endianness考虑在内。我还建议您将 name 归零和 surname在使用它们之前先缓冲,以免最终在二进制文件中出现未初始化内存的人工制品。

此外,无需将类的属性传递给 to_file()方法。

#include <cstring>
#include <fstream>
#include <iostream>

class info
{
private:
char name[15];
char surname[15];
int age;

public:
info()
:name()
,surname()
,age(0)
{
memset(name, 0, sizeof name);
memset(surname, 0, sizeof surname);
}

void input()
{
std::cout << "Your name:" << std::endl;
std::cin.getline(name, 15);

std::cout << "Your surname:" << std::endl;
std::cin.getline(surname, 15);

std::cout << "Your age:" << std::endl;
std::cin >> age;

to_file();
}

void to_file()
{
std::ofstream fs("example.bin", std::ios::out | std::ios::binary | std::ios::app);
fs.write(name, sizeof name);
fs.write(surname, sizeof surname);
fs.write(reinterpret_cast<const char*>(&age), sizeof age);
fs.close();
}
};

int main()
{
info ob;
ob.input();
}

示例数据文件可能如下所示:

% xxd example.bin
0000000: 7573 6572 0000 0000 0000 0000 0000 0031 user...........1
0000010: 3036 3938 3734 0000 0000 0000 0000 2f00 069874......../.
0000020: 0000 ..

关于c++ - 写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com