UVa 1593代码对齐

原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4468

这道题目的话可以使用iomanip这个头文件

 #include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
#include<vector>
#include<iomanip>
using namespace std; vector<string> code[];
int len[]; int main()
{
//freopen("D:\\in.txt", "r", stdin);
int i = ;
string s, buf;
while (getline(cin, s))
{
int t = ;
stringstream ss(s);
while (ss >> buf)
{
len[t] = max((int)buf.length(), len[t]);
code[i].push_back(buf);
t++;
}
i++;
}
cout << setiosflags(ios::left);
for (int p = ; p < i; p++)
{
int j = ;
for (j; j < code[p].size() - ; j++)
{
cout << setw(len[j] + ) << code[p][j];
}
cout << code[p][j] << endl;
}
return ;
}

在这个程序里所运用到的关于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
上一篇:有如下Student 对象,  private String name;       private int age;       private int score;   private String classNum;  其中,classNum


下一篇:编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止。使用while循环一次读取一个单词,当一个单词连续出现两次是使用break语句终止循环。输出连续重复出现的单词,或者输出一个消息说明没有人任何单词是重复出现的。