题目:https://vjudge.net/problem/UVA-1593
思路:用vector的数组模拟string的二位数组存储单词,记录下没列单词的最大长度,然后用setw设置位宽,左对齐输出单词即可。
注:每行的最后一列直接输出,不能设置列宽,否则会输出多余的空格。
代码:
#include <iostream>
#include <string>
#include <sstream>
#include <cstdio>
#include <iomanip>
#include <map>
#include <set>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
int maxlen[1000];
vector<string> code[1000];
int main()
{
string s;
int cot = 0;
while(getline(cin, s))
{
stringstream ss;
ss << s;
int i=0;
while(ss >> s)
{
code[cot].push_back(s);
if(s.size()>maxlen[i])
{
maxlen[i] = s.size();
}
i++;
}
cot++;
}
for(int i=0; i<cot; i++)
{
for(int j=0; j<code[i].size(); j++)
{
if(j!=code[i].size()-1)
{
cout << setiosflags(ios::left) << setw(maxlen[j]) << code[i][j] << ' ';
}
else
{
cout << code[i][j] << endl;
}
}
}
return 0;
}