UVa 1593代码对齐

原题链接: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
原文地址:https://www.cnblogs.com/zyb993963526/p/6091584.html