我想将 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);
}
在这里,我总是遇到段错误,那有什么问题呢?
最佳答案
您的 put()
函数调用自身而不是基类版本。所以你会得到无限递归,这会导致堆栈溢出。
替换
put(lsb) && put(msb);
与
std::ofstream::put(lsb) && std::ofstream::put(msb);
关于c++ - 如何重载 std::ofstream::put()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816234/