【发布时间】:2018-02-03 19:19:43
【问题描述】:
这个问题对如何将std::vector 写入文件有很好的答案:Reading and writing a std::vector into a file correctly
就我而言,我有一个数组向量:
vector<array<double, 3> > vec;
我想写入一个文件以获得具有以下格式的文件,其中值是双精度数,第一个数字是向量中的位置,第二个是数组中的位置:
vec0_0 vec0_1 vec0_2 vec1_0 vec1_1 vec1_2 vec2_0 ...
我可以使用...
std::copy(vec.begin(), vec.end(), std::ostreambuf_iterator<char>(FILE));
...或...
size_t sz = vec.size();
FILE.write(reinterpret_cast<const char*>(&vec[0]), sz * sizeof(vec[0]));
...正如在提到的问题中针对标量类型提出的那样,还是因为vector 中的类型是array 而我需要做不同的事情?
【问题讨论】:
-
你是什么意思安全?
-
@user0042:现在更快乐了吗? ;-)
-
你为什么不试试呢?应该工作......
-
@user0042:
vector保证它的元素像经典的 C 数组一样存储。但是否也保证array<double, 3>在内存中准确且不超过 3 个连续双打? (顺便说一句,你的答案包含“尝试”和“应该”。所以你明白我最初要求“安全”的原因了吗?)