无格式操纵符是执行以下操作的一个函数:
执行到流的引用
以某种方式操作流
返回其参数
由于为 iostream 预定义了接受指向此类函数的指针的移位运算符,因此可以在输入或输出运算符序列中放入函数。移位运算符会调用函数而不是尝试读取或写入值。以下示例显示了将 tab 插入 ostream 的 tab 操纵符:
ostream& tab(ostream& os) { return os <<’\t’; } ... cout << x << tab << y;
该示例详细描述了实现以下代码的方法:
const char tab = ’\t’; ... cout << x << tab << y;
下面示例显示了无法用简单常量来实现的代码。假设要对输入流打开或关闭空白跳过功能。可以分别调用 ios::setf 和 ios::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; }