Knowledge :stringstream
stringstream ssm;
string t;
ssm << "adf"; //输入字符串流
ssm << "123";
cout << ssm.str(); //adf123
ssm.clear();
getline(cin, t); //abc 123 \\666 jjjjj
ssm << t;
while (ssm >> t) //字符串流拆分
{
cout << t << endl;
}
//abc
//123
//\\\666
//jjjjj
按照题意解题即可
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string>
#include<cassert>
#include<cctype>
#include<memory.h>
#include<cstdio>
#include<sstream>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<cstdlib>
using namespace std;
int main()
{
vector<vector<string>> vec; //二维string组
vec.clear();
string t; int i = 0;
int Max[1010] = { 0 };
while (getline(cin, t)) //用stringstream依次拆分所有行串
{
stringstream sst;
sst << t;
string s;
vector<string> line;
line.clear();
vec.push_back(line);
while (sst >> s)
{
vec[i].push_back(s);
}
i++;
}
for (int j = 0; j < 190; j++) //统计各列最长字符串的长度
{
for (int k = 0; k < i; k++)
{
if (j < vec[k].size())
{
Max[j] = max((int)vec[k][j].length(), Max[j]);
}
}
}
for (int j = 0; j < i; j++) //格式化输出
{
for (int k = 0; k < vec[j].size(); k++)
if(k!=vec[j].size()-1)cout << setw(Max[k]+1) <<left<< vec[j][k];
else cout << left << vec[j][k];
cout << endl;
}
return 0;
}