原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4468
这道题目的话可以使用iomanip这个头文件
1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<algorithm> 5 #include<vector> 6 #include<iomanip> 7 using namespace std; 8 9 vector<string> code[1010]; 10 int len[185]; 11 12 int main() 13 { 14 //freopen("D:\in.txt", "r", stdin); 15 int i = 0; 16 string s, buf; 17 while (getline(cin, s)) 18 { 19 int t = 0; 20 stringstream ss(s); 21 while (ss >> buf) 22 { 23 len[t] = max((int)buf.length(), len[t]); 24 code[i].push_back(buf); 25 t++; 26 } 27 i++; 28 } 29 cout << setiosflags(ios::left); 30 for (int p = 0; p < i; p++) 31 { 32 int j = 0; 33 for (j; j < code[p].size() - 1; j++) 34 { 35 cout << setw(len[j] + 1) << code[p][j]; 36 } 37 cout << code[p][j] << endl; 38 } 39 return 0; 40 }
在这个程序里所运用到的关于iomanip这个头文件的一些知识:
▲setw(n)用法: 通俗地讲就是预设宽度
如 cout<<setw(5)<<255<<endl;
结果是:
(空格)(空格)255
▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
如 cout<<setfill(‘@‘)<<setw(5)<<255<<endl;
▲ setprecision用法
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosflags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
setiosflags(ios::fixed) 固定的浮点显示
setiosflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws) 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
2016-11-22 23:10:59