gpt4 book ai didi

c++ - 为什么 cout 返回 smanip?

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:34 24 4
gpt4 key购买 nike

谁能给我解释一下 setw 操纵器的声明?试图理解它,我完全被震撼了。! iomanip中setw的声明如下

 smanip setw(int)

什么是 smanip?当我们给出 std::cout << setw(10) << "Hai"时会发生什么 [我想知道输出实际上是如何受 setw 影响的,换句话说,幕后发生的 Action )

最佳答案

smanip是实现定义的类型。只要工作完成,库就可以将它定义或类型定义为任何它喜欢的东西。

在实践中,它将是某种结构,表示 (a) 要执行的操作,以及 (b) 参数 10用于此操作。它也可能有一个函数来执行操作,也可能没有,这取决于实现如何定义 operator<<(ostream &, smanip)。 ,或一些类似的重载以捕获必要的操作数类型。我还没有检查我的实现来找出答案。

至于如何影响输出:my_stream << setw(10)定义为对流的影响与调用 my_stream.width(10) 相同.所以 operator<<重载将确保以某种特定于实现的方式发生。非参数化流操纵器的运算符重载专门定义为调用操纵器,但带有 smanip有更多的实现自由。

关于c++ - 为什么 cout 返回 smanip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659113/

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