UVa

看上去十分麻烦的一道题,但是看了看别人的写法感觉大神们写的无比简单。

就是记一个每列单词的最大长度,然后剩下的事交给NB的iomanip头文件就好。

stringsteam是一个神奇的东西。

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <sstream>
#include <string>
#include <cstring>
#include <vector>

using namespace std;
#define maxn 1000 + 100

vector<string> code[maxn];
int maxlen[maxn];

int main()
{
    string s;
    int cas = 0;
    while (getline(cin, s))
    {
        stringstream ss(s);//用这个字符串流可以从字符串中输入文件
        string word;
        int tot = 0;
        while(ss >> word)
        {
            maxlen[tot] = max(maxlen[tot], (int)word.size());
            code[cas].push_back(word);
            ++tot;
        }
        ++cas;
    }

    cout << setiosflags(ios :: left);
    for (int j = 0; j < cas; j++)
    {
        int i = 0;
        for (i; i < code[j].size()-1; i++)
            cout << setw(maxlen[i] + 1) << code[j][i];

        cout << code[j][i] << endl;
    }

}
原文地址:https://www.cnblogs.com/ruthank/p/9015032.html