当为iostream 例如,对于std::cout << std::internal << myClassReference;行为不同于std::cout << std::left << myClassReference;除了区别之外,如果可以轮询iostream的操纵器状态,这如何完成?另外,实现自定义操纵器的人应该怎么做,以便同样可以轮询其操纵器的状态? 最佳答案 可以使用std::ios_base类的flags()函数完成对c++流进行格式化状态轮询,所有c++流都将从该函数继承。flags函数有两种类型:用const调用的stream.flags()轮询函数和用stream.flags(mynewflags)调用的设置函数。这两个函数都会在调用fmtflags之前返回其状态下flags对象的副本。实现自定义操纵器集会有些困难,并且要求实现者首先确定他们希望如何存储和访问这些操纵器。就个人而言,我偏爱实现另一个从std::ios_base继承的流对象(可能是间接继承),并使用它封装基本流(可能只是标准库中的一个,而这个新类可能以流类型为模板)和其他操纵器标志。其他任何方法都需要检查外部变量中的操纵器标志的方式,或者记住使用任何打印函数传递变量,这会阻碍使用operator<<进行输出。这意味着您将需要使另一个成员函数轮询您的自定义标志,但这确实是明智的。关于c++ - 可以轮询标准C++ iostream操纵器的状态吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33879572/
10-11 12:14