我可以对文件进行无格式写入,然后对整数类型的文件进行格式化读取吗?
Can I do an Unformatted Write to a File Then a Formatted Read From a File for Integral Types?
鉴于我将 vector
个整数写入未格式化的临时文件:
ofstream foo("foo.txt", ios::binary);
const auto length= size(output);
foo.write(reinterpret_cast<const char*>(length), sizeof(length));
if(!empty(input)) foo.write(reinterpret_cast<const char*>(data(output)), sizeof(decltype(output)::value_type) * length);
我可以稍后从 input
与 output
类型相同的文件中执行以下格式化读取吗:
ifstream foo("foo.txt", ios::binary);
size_t size;
foo.read(reinterpret_cast<char*>(size), sizeof(size));
input.resize(size);
if(!empty(input)) copy(istream_iterator<decltype(output)::value_type>(foo), istream_iterator<decltype(output)::value_type>(), begin(input));
Can I do an Unformatted Write to a File Then a Formatted Read From a File for Integral Types?
不,你不能那样做。
使用无格式写入写入数据的文件内容与格式化写入有很大不同。格式化读取无法准确解释未格式化数据。
鉴于我将 vector
个整数写入未格式化的临时文件:
ofstream foo("foo.txt", ios::binary);
const auto length= size(output);
foo.write(reinterpret_cast<const char*>(length), sizeof(length));
if(!empty(input)) foo.write(reinterpret_cast<const char*>(data(output)), sizeof(decltype(output)::value_type) * length);
我可以稍后从 input
与 output
类型相同的文件中执行以下格式化读取吗:
ifstream foo("foo.txt", ios::binary);
size_t size;
foo.read(reinterpret_cast<char*>(size), sizeof(size));
input.resize(size);
if(!empty(input)) copy(istream_iterator<decltype(output)::value_type>(foo), istream_iterator<decltype(output)::value_type>(), begin(input));
Can I do an Unformatted Write to a File Then a Formatted Read From a File for Integral Types?
不,你不能那样做。
使用无格式写入写入数据的文件内容与格式化写入有很大不同。格式化读取无法准确解释未格式化数据。