私は単純なint型のベクトルを持っており、バイナリファイルに書きたいと思っています。例えば:私は16進モードでファイル "binary_ints.data" を調べる場合C++バイナリファイル - ints - strangeの動作を書く
#include <fstream>
#include <vector>
int main() {
std::vector<uint32_t> myVector{5, 10, 15, 20 };
// write vector to bin file
std::ofstream outfile("./binary_ints.data", std::ios_base::binary|std::ios::trunc);
std::copy(myVector.begin(), myVector.end(), std::ostreambuf_iterator<char>(outfile));
outfile.close();
return 0;
}
はその後、私はこれを持っている:
00000000: 050a 0f14 0a
は大丈夫厥! myVectorは、このデータを持っている場合
はしかし、:
std::vector<uint32_t> myVector{3231748228};
その後、保存された六角は奇妙です:ヘックスで
00000000: 840a
84何が起こっているのInt 3231748228.
と一致していません。ここに?おかげさまで
'std :: copy'はある要素を複数の新しい要素に変換するのではなく、' std :: ostreambuf_iterator'も変換しません。 – chris
'int'値が> 255の場合に何が起こるかを見るためにいくつかの実験を行ったことがあります。 – PaulMcKenzie
実際にはベクトルデータの一部である以外の改行がどこから来るのか不思議です。プログラムはベクタデータの後に書き込むべきではありません。 –