需要一个str补充空格的算法

C++环境
string类型的字符串,前后补充指定数量空格。
比如输入参数为"abc",5,3
期待输出的string为" abc "

怎么理解?为何5,3就是前后各一个空格?如果6,3,怎么办?规则要说清楚
这样行不?

#include <iostream>
using namespace std;
#include <string>

int  main ()
{
    int n = 5;
    string s1;
    string s2 = "abc";
    int m = s1.length();
    int k = (n-m)/2;
    int p = n-m-k;
    for(int i=0;i<k;i++)
        s1 += " ";
    s1 += s2;
    for(int i=0;i<p;i++)
        s1 += " ";
    cout<<s1;

    return 0 ;
}
 

是要前面加5个空格,后面加3个空格吧
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <iostream>
using namespace std;
#include <string>
int  main ()
{
    string s = "abc";
    int a = 5;
    int b = 3;
    for(int i=0;i<a;i++)
        s = " "+s;
    for(int i=0;i<b;i++)
        s = s+" ";
    cout<<"["<<s<<"]";
    return 0 ;
}

img

在str前面加5个空格,后面加3个空格?,代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str;
    int a,b;
    cin >> str >> a >> b;
    int i = 0;
    while(i++ < a)
        cout << " ";
    cout << str;
    i=0;
    while(i++<b)
        cout << " ";
    cout << endl;
    return 0;
}



string add_spc_lr(char *str,int l,int r) {
 assert(str);
 assert(l>=0);
 assert(r>=0);
 string r=string(str);
 for (int i=0;i<l) r=string(" ")+r;
 for (int i=0;i<r) r=r+string(" ");
 return r;
}