gpt4 book ai didi

c++ - 为什么 tellp() 是非常量?

转载 作者:行者123 更新时间:2023-11-30 04:45:28 25 4
gpt4 key购买 nike

我正在开发一个记录器,它有一条继承 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

关于c++ - 为什么 tellp() 是非常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com