当我打开文件的 ofstream 对象时,我会执行以下操作:
std::ofstream outFile("myfile");
然后我想给它一些数字,但它唯一的方法是 ::write()
方法需要 const char*
和尺寸。所以我可以这样做:
int temp = 5;
outFile.write((const char*)&temp, sizeof(int));
还有输入operator <<
,但我不需要格式化输入,我希望将其写为纯二进制数据。我想知道是否有一种方法可以直接写:
outFile.write(12, sizeof(int));
outFile.write(10, sizeof(int));
而不是创建临时对象,或者之前分配一个数组。我认为限制是我可以在参数中放入的唯一值是 RValue,并且似乎没有办法从右值生成左值。我想从技术上讲,右值会持续到行尾,所以如果有 std::move
相反的值它可以工作。可以直接写数字吗?
最佳答案
So I could do:
你可以做得更好:
void writeInt( std::ostream &os, int i )
{
os.write( reinterpret_cast<const char*>(&i), sizeof( i ) );
}
然后将其与右值或左值一起使用:
int i = 0;
writeInt( f, i );
writeInt( f, 5 );
writeInt( f, funtionReturnsInt() );
无论如何您都应该这样做,因为您稍后可能想要更改存储/加载数据的格式,这样您只需更改一次。
关于c++ - 如何将数字直接写入 ofstream 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606401/