C++ 将二进制数据写入c+中的fstream+; 问题:
我有一些结构要写入二进制文件。它们由cstdint中的整数组成,例如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
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.
}