为什么 tellp() 是非常量?
Why would tellp() be a non-const?
我正在开发一个记录器,它有一条消息继承了 std::stringstream
。
当我想打印消息时,我调用了一个接受消息的函数 const
:
void logger::log_message(message const & msg)
在那个函数中,我想检查消息中是否写入了任何内容。如果没有,我可以忽略这个电话。我使用以下内容:
if(const_cast<message &>(msg).tellp() == 0)
{
return;
}
我不得不使用 const_cast<>()
因为 tellp()
不是 const
。我想知道的是为什么检索当前搜索位置会对流产生副作用。我能理解改变位置的 seekp()
,但不能理解 tellp()
。这可能是规格中的错误吗?
如果失败,tellp() 将更改对象的 rdstate。
参见:
https://en.cppreference.com/w/cpp/named_req/UnformattedOutputFunction
我正在开发一个记录器,它有一条消息继承了 std::stringstream
。
当我想打印消息时,我调用了一个接受消息的函数 const
:
void logger::log_message(message const & msg)
在那个函数中,我想检查消息中是否写入了任何内容。如果没有,我可以忽略这个电话。我使用以下内容:
if(const_cast<message &>(msg).tellp() == 0)
{
return;
}
我不得不使用 const_cast<>()
因为 tellp()
不是 const
。我想知道的是为什么检索当前搜索位置会对流产生副作用。我能理解改变位置的 seekp()
,但不能理解 tellp()
。这可能是规格中的错误吗?
如果失败,tellp() 将更改对象的 rdstate。
参见: https://en.cppreference.com/w/cpp/named_req/UnformattedOutputFunction