【发布时间】:2011-03-31 08:46:22
【问题描述】:
在尝试回答this question 时,我编写了这个小测试程序:
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
void writeFile() {
int data[] = {0,1,2,3,4,5,6,7,8,9,1000};
std::basic_ofstream<int> file("test.data", std::ios::binary);
std::copy(data, data+11, std::ostreambuf_iterator<int>(file));
}
void readFile() {
std::basic_ifstream<int> file("test.data", std::ios::binary);
std::vector<int> data(std::istreambuf_iterator<int>(file),
(std::istreambuf_iterator<int>()));
std::copy(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
int main()
{
writeFile();
readFile();
return 0;
}
按预期工作,将数据写入文件,读取文件后,正确打印:
0 1 2 3 4 5 6 7 8 9 1000
但是,我不确定是否存在任何缺陷(除了字节顺序问题,在处理二进制数据时您总是会遇到这些问题)?这允许吗?
【问题讨论】: