无格式操纵符是具有如下功能的函数:
执行到流的引用
以某种方式操作流
返回操纵符的参数
由于为 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;
}
|