今天在CS 111课程中,我的导师以“'简介”结束了。看看将结构写入二进制文件。我说简短,因为他只是把它作为一种旁边,说它不会在决赛中。问题是,我不完全理解程序示例中发生了什么,这让我感到烦恼。希望有人会花时间向我解释。代码如下:
#include <iostream>
#include <fstream>
using namespace std;
struct PayStub
{
int id_num;
bool overtime;
float hourly_rate;
};
int main()
{
PayStub info = {1234, false, 15.45};
ofstream data_store;
data_store.open("test.cs111", ios::binary);
char *raw_data = (char*)&info;
data_store.write(raw_data, sizeof(PayStub));
data_store.close();
return 0;
}
我不明白char *raw_data = (char*)&info;
声明中具体发生了什么,以及为什么有必要。我理解一个指向char的指针正在被声明和初始化,但究竟是什么被初始化,以及如何在下一行中使用它?
我希望这不是一个愚蠢的问题。在此先感谢您的帮助。
答案 0 :(得分:3)
char *raw_data = (char*)&info;
,raw_data将指向info
的第一个字节的地址。
使用data_store.write(raw_data, sizeof(PayStub));
,我们要求data_store将内容中的内容写入文件,该内容从raw_data
开始,以raw_data + sizeof(PayStub))
结束。
本质上,我们找到PayStub
的起始地址和长度,并将其写入磁盘。
这不是一个愚蠢的问题。一旦你阅读了指针,一切都会有意义。
答案 1 :(得分:0)