【发布时间】:2018-06-03 20:56:53
【问题描述】:
我的任务是按照数据成员的特定顺序保存一些对象数据,我会尽量简化 .考虑二进制文件中的这个基类构造函数。 (请注意,使用 char * 不是我的选择)。
Base(ifstream & in_file) {
int n;
in_file.read((char *)&n, sizeof(n));
m_var = new char[n + 1];
in_file.read(m_var, n);
m_var[n] = '\0';
in_file.read((char *)&m_intvar, sizeof(m_intvar));
}
它必须初始化 m_var (char *) 和另一个整数变量。这段代码有效,尽管它要求保存 char * 的长度以便我分配内存。
问题从这里开始。我被指示不要保存字符串的大小,而是在我写入文件的每个值之后只输入一个\n。所以我需要一些如何读取文件,并获取字符串直到\n 字符。
我正在考虑逐个字符地读取字符,但找不到方法,我认为有一个 istream 函数可以提供。我认为与文本文件的>> 类似的一些功能也很好。
【问题讨论】:
-
@ForceBru 据我所知,它是文本文件的运算符?
-
cppreference.com 是你的朋友:en.cppreference.com/w/cpp/io/basic_istream/get
-
std::getline()怎么样? -
请注意,
'\n'之类的分隔符不适用于真正的二进制数据,它只能用于文本数据(文件可能以二进制模式打开,其他部分可能包含二进制数据文件)
标签: c++ file binaryfiles