我想将int16_t值写入文件。
因此,我试图重载std::ofstream::put()方法。
#include <fstream>
#include <cstdint>
class Ofstream : public std::ofstream
{
public:
Ofstream( const std::string & s) : std::ofstream(s) {}
// for little-endian machines
Ofstream & put(int16_t val)
{
char lsb, msb;
lsb = (char)val;
val >>= 8;
msb = (char)val;
put(lsb) && put(msb);
return *this;
}
~Ofstream() {}
};
int main()
{
int16_t val = 0x1234;
Ofstream ofile( "test");
ofile.put(val);
}在这一点上,我总是有一个分割错误,所以有什么问题吗?
发布于 2019-06-29 09:13:40
您的put()函数调用自身,而不是基类版本。因此,您得到无限递归,这将导致堆栈溢出。
替换
put(lsb) && put(msb);使用
std::ofstream::put(lsb) && std::ofstream::put(msb);https://stackoverflow.com/questions/56816234
复制相似问题