Oracle® Solaris Studio 12.4:C++ 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

13.7.1 使用无格式操纵符

无格式操纵符是执行以下操作的一个函数:

  • 执行到流的引用

  • 以某种方式操作流

  • 返回其参数

由于为 iostream 预定义了接受指向此类函数的指针的移位运算符,因此可以在输入或输出运算符序列中放入函数。移位运算符会调用函数而不是尝试读取或写入值。以下示例显示了将 tab 插入 ostreamtab 操纵符:

ostream& tab(ostream& os) {
             return os <<’\t’;
            }
...
cout << x << tab << y;

该示例详细描述了实现以下代码的方法:

const char tab = ’\t’;
...
cout << x << tab << y;

下面示例显示了无法用简单常量来实现的代码。假设要对输入流打开或关闭空白跳过功能。可以分别调用 ios::setfios::unsetf 来打开和关闭 skipws 标志,也可以定义两个操纵符。

#include <iostream.h>
#include <iomanip.h>
istream& skipon(istream &is) {
       is.setf(ios::skipws, ios::skipws);
       return is;
}
istream& skipoff(istream& is) {
       is.unsetf(ios::skipws);
       return is;
}
...
int main ()
{
      int x,y;
      cin >> skipon >> x >> skipoff >> y;
      return 1;
}