格式化操纵算子-learning ros for robotics programming - second edition
6.8格式化操纵算子就像我们在前面的例子中看到的一样,调用成员函数有点乏味。为使读和写更容易,C++提供了一套操纵算子以起到与成员函数同样的作用。提供在IOSTREAM.H里的不带参数的操纵算子包括dec、oct和hex。它们各自更简明扼要地完成与setf(ios::dec, ios::basefield)
、setf(ios::oct, ios::basefield)
和setf(ios::hex, ios::basefield)
同样的任务。IOSTREAM.H还包括ws、endl、ends和flush以及如下所示的其他操纵算子:
-
showbase:在打印整数值时,标明数字基数(十进制、八进制和十六进制);所用的格式能被C++编译器读出
-
showpos:显示正值符号加(+)
-
noshowpos:不显示正值符号
-
uppercase:显示代表十六进制值的大写字母A-F以及科学记数法中的E
-
nouppercase:显示代表十六进制值的小写字母a-f
-
showpoint:表明浮点数值的小数点和后面的零
-
noshowpoint:不表明浮点数值的小数点和后面的零
-
skipws:跳过输入中的空白字符
-
noskipws:不跳过输入中的空白字符
-
left:左对齐,右填充
-
right:右对齐,左填充
-
internal:在引导符或基数指示符和值之间填充
-
scientific:使用科学记数法
-
fixed:使用定点记数法
-
setprecision()或
ios::precision()
:设置小数点后面的位数
如果正在使用带参数的操纵算子,必须也包含头文件IOMANIP.H。这包含了解决建立带参数操纵算子所遇到的一般问题的代码。它有六个预定义的操纵算子:
-
setiosflags(fmtflags n):设置由n指定的格式标志;设置一直起作用直到下一个变化为止,像
ios::setf()
一样 -
resetiosflags(fmtflags n):清除由n指定的格式标志;设置一直起作用直到下一个变化为止,像
ios::unsetf()
一样 -
setbase(base n):把基数改成n,这里n取10、8或16(任何别的值结果为0)。如果n是0,输出基数为10,但输入使用C约定:10是10,010是8而0xf是15。我们还是使用dec、oct和hex输出为好
-
setfill(char n):把填充字符改成n,像
ios::fill()
一样 -
setprecision(int n):把精度改成n,像
ios::precision()
一样 -
setw(int n):把域宽改成n,像
ios::width()
一样
如果你对更多相关操纵技术感兴趣,可以参考操纵杆编程和精彩编程与编程技巧,这些资源将为你提供更深入的了解。如果你正在使用VC编程操纵Office,可能会发现这篇文章非常有帮助。对于文件操作类的具体实现,建议查看C++操纵文件和操纵文件类。
有趣的是,不仅仅是文本操作,甚至在远程操纵软件和游戏杆的使用中,这些概念也大有用武之地。比如,可以看看远程操纵软件和操纵游戏杆的相关文章来进一步了解。这样,你就能更加全面地掌握操纵技术,不论是处理文本还是其他复杂的操作。