本节书摘来自异步社区出版社《C和C++代码精粹》一书中的第1章第1.7节,作者: 【美】Chuck Allison,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.7 类型安全I/O
C和C++代码精粹
当然每个C程序员都曾经使用过printf的错误格式描述符号。对printf来说没有办法检查所传递的数据项是否与字符串格式匹配。
程序清单1.4 一个说明引用调用的交换函数
// swap.cpp
#include <stdio.h>
void swap(int &, int &);
main()
{
int i = 1, j = 2;
swap(i,j);
printf("i == %d, j == %d\n", i, j);
}
void swap(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
//输出:
i == 2, j == 1
做如下事情的频率如何?仅仅是在运行时发现问题?
double d;
…
printf("%d\n",d);/*嘿!本应该用%f*/
换句话说,C++流库使用一个对象的类型来决定正确的格式:
double d;
…
cout<<d<<endl;//不会失败的
表达式cout<
double x = 1.5, y = 2.5; //从现在起保留小数点后两位
cout.precision(2); //保持小数点后的0
cout.setf(ios::showpoint);
cout<<x<<'\n'; //打印1.50
cout<<y<<'\n'; //打印2.50
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。