为什么 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
相关文章:
- 我从int x[3]得到的一个非常奇怪的输出;
- 一个非常简单的win32套接字代码,但工作错误
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- 无法使用crfsuite的C++ API编译一个非常简单的Tagger示例
- C++中一个非常简单的枚举类错误
- 我在内存泄漏和字符串方面遇到了一个非常奇怪的问题
- 我正在写一个非常简单的字母评分系统,if语句是最有效的吗?
- 我刚刚创建了一个非常快速的素数排序方法.如何改进?
- 在64位系统上创建一个非常大的数组的缺点是什么
- (c++)代码中一个非常奇怪的问题
- 打印出一个非常小的浮点数
- C++:C字符串、指针和一个非常有趣的while循环
- 在 matlab 中编写一个非常基本的 mex 函数
- 在C 中编写一个非常简单的事件类
- 如何取一个非常大的数的根
- 在使用Qt Creator创建一个非常简单的项目时,在Qt中遇到"segmentation fault"
- 使用C++计算一个非常大的幂
- 一个非常弱的引用(无法转换为共享)
- 在一个非常简单的程序中检测到内存泄漏.怎么办
- 非虚拟接口?(需要一个非常高性能的低级抽象)