C++ 将二进制数据写入c+中的fstream+; 问题:

C++ 将二进制数据写入c+中的fstream+; 问题:,c++,file,io,binary,C++,File,Io,Binary,我有一些结构要写入二进制文件。它们由cstdint中的整数组成,例如uint64\u t。有没有一种方法可以将它们写入二进制文件,而不需要我手动将它们拆分为char数组,并使用fstream.write()函数 我试过的 我的天真想法是,C++会发现我有一个二进制模式的文件,而 是的,你可以,这就是:< /p> #包括 #包括 #包括 int main(){ std::fstream文件; uint64\u t myuint=0xFFFF; 打开(“test.bin”,std::ios::app

我有一些结构要写入二进制文件。它们由cstdint中的整数组成,例如
uint64\u t
。有没有一种方法可以将它们写入二进制文件,而不需要我手动将它们拆分为
char
数组,并使用
fstream.write()
函数

我试过的 <>我的天真想法是,C++会发现我有一个二进制模式的文件,而<代码> 是的,你可以,这就是:< /p>
#包括
#包括
#包括
int main(){
std::fstream文件;
uint64\u t myuint=0xFFFF;
打开(“test.bin”,std::ios::app | std::ios::binary);
file.write(reinterpret_cast(&myuint)、sizeof(myuint));//理想情况下,应该将其memcpy到char缓冲区。
}

请参见例如,它解决了我的部分问题。我希望能够使用
Yes,在其实现中使用
std::fstream
定义一个新类型,并使用模板化的
运算符,但是我可以告诉该模板只接受,例如uint64_t、uint16_t和uint8_t,而不接受例如std::string或bool吗?是的。是的,你可以。
#include <iostream>
#include <fstream>
#include <cstdint>

using namespace std;

int main() {
  fstream file;
  uint64_t myuint = 0xFFFF;
  file.open("test.bin", ios::app | ios::binary);
  file << myuint;
  file.close();
  return 0;
}
#include <iostream>
#include <fstream>
#include <cstdint>

int main() {
  std::fstream file;
  uint64_t myuint = 0xFFFF;
  file.open("test.bin", std::ios::app | std::ios::binary);
  file.write(reinterpret_cast<char*>(&myuint), sizeof(myuint)); // ideally, you should memcpy it to a char buffer.
}