【发布时间】:2020-04-25 16:39:07
【问题描述】:
例如此文本将变为:
lui Andino ii place
mult informatica si doreste
sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician
lui Andino ii place
mult informatica si doreste
sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician
我的想法是找到一个文本行的最长大小(在我的代码中命名为 maxx)并在其他行中添加“maxx - 文本行的大小”空格。
例如:
I eat.
I eat everyday at 5 pm in the morning.
我会在前面放置“第二行文字减去第一行文字的大小”空格。
这是我到现在为止所做的。
cin >> t ///t is the number of line of text
int maxx = 0, t1 = t, k = 0;
vector<string> str;
while(t--)
{
string s;
getline(cin, s);
str.push_back(s);
if (s.size() > maxx)
maxx = s.size();
}
for (int j = 0 ; j < t1; j++)
{
if (str[i].length() < maxx)
{
str[i].insert(0, ' ', maxx - str[i].length());
}
cout << str[i] << "\n";
}
一切正常,除非我输出的某些行充满了未知字符。
这是程序编译的内容:
lui Andino ii place
mult informatica si doreste
sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician
谢谢你帮助我!
【问题讨论】:
-
不用修改字符串,只要使用正确的I/O manipulator即可。
-
@SamVarshavchik 我编辑了我的答案。
-
常用设置字段宽度有一个,设置left或right对齐有两个。只需查看列表,您应该就能弄清楚。
-
@MogovanJonathan 看看这里的例子en.cppreference.com/w/cpp/io/manip/left
-
看这个例子,这就是你所需要的,仅此而已:Right alignement cout