语法:int sprintf(char型指针, 格式化字符串,可变参数列表);
//第2个到最后一个参数和printf是一样的,第一个参数是生成的新字符串,返回值int等于新字符串的长度。
我们可以通过这个来做一些字符串拼接的工作:
char p[20]={0};
char q[20]="1234567891067891011";

int qq=sprintf(p,"%-.8s%s",q+6,"you are stupid");
printf("%s %d",p,qq); //输出 78910678you are stupid 22
??
二、C++语言格式化输出
C++的格式化输出主要是两种情况,一是包含<iomanip>头文件,通过操纵符,进行简单的操作。二是使用cout的成员函数来控制。
(1)整数的格式化输出
1.??宽度与填充
若采用操纵符setw(整数n)与setfill(字符c):
char??a[20];
cin.get(a, 5);//输入1234
cin.get();????//发挥getchar功能,去掉上一次get剩下的\n
cout <<??setfill('q')<<setw(8) <<??a <<??endl;??????//setw()与setfill()操纵符
控制台界面:
1234
qqqq1234 ????????//默认右对齐,用q填满了左边剩下的四位
请按任意键继续. . .
若采用cout的成员函数cout.fill(字符),cout.width(整数)来实现:输入输出相同,源代码是:
char??a[20];
cin.get(a, 5);
cin.get();
cout.fill('q');
cout.width(8);
cout <<??a <<??endl;
2.??左右对齐
操纵符不能完成左右对齐,此时需要cout的成员函数cout.setf(),setf()函数的参数是格式标志,完成左右对齐的格式标志是ios::left和ios::right(默认右对齐),例如:
char??a[20];
cin.get(a, 5);??????//输入1234
cin.get();
cout.setf(ios::left);??//左对齐
cout.fill('q');??//填充为q
cout.width(8);????//宽度8,右侧空出4个位置放q
cout <<??a <<??endl;
融合二者特点有:
操纵符:setiosflag(格式标志)也是一种操纵符。
3.??正负号:也是只能由cout的成员函数setf()实现,格式表示是ios::showpos
例如:
int??num = 0;
cin >>??num;????????//输入55
cout.setf(ios::left);??????//左对齐
cout.setf(ios::showpos);??????//show positive 显示正号
cout <<??num <<??endl;??????//输出 +55
4.??进制
操纵符方法:oct,dec,hex:与cout的成员函数setf(),unsetf() :
int??num = 0;
int??n = 88;
cin >>??num;//输入98
cout <<??hex <<??num <<??endl;??????//输出62,没什么好说的
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-81056-4.html
美国提供了什么