题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51294
#include <iostream> #include <string> #include <vector> #include <sstream> #include <iomanip> #include <cstring> using namespace std; /*************************************************************************************************************** 题意:输入若干行代码,按照左对齐输出。每列单词之间有一个空格,最后一列单词没空格 学习: 1,getline(cin,s) 和 stringstream 流的只用方法 2,左对齐cout << setiosflags(ios::left);或者右对齐 cout << setiosflags(ios::ight);简单的用法 3,给对齐的数据设置设置对其空间,也就是对齐格式。题中每列单词的最大长度为每一列的对齐空间 用法: cout << setw(length) << s[i][j]; ***************************************************************************************************************/ vector<string> s[1005]; int le[185]; int main() { memset(le,0,sizeof(le)); string line,buf; int r=1,c=0; while(getline(cin,line)) { stringstream ss(line); while(ss>>buf){ le[c]=max(le[c],(int)buf.size()); c++; s[r].push_back(buf); } r++; c=0; } cout<<setiosflags(ios::left); for(int i = 1;i < r;i ++){ for(int j = 0;j < s[i].size()-1;j++) cout<<setw(le[j]+1)<<s[i][j]; cout<<s[i][s[i].size()-1]<<endl; } //vector<Point> ().swap(PointVec); //不知道怎么释放vector的空间,百度了一下不理解,就没用了 line.clear(); buf.clear(); return 0; }