有效地向字符串附加或插入可变数量的空格

时间:2013-05-14 03:26:21

标签: c++ string insert append

我有一个简单的程序,可以插入或附加一些空格来对齐文本。

f()
{
    string word = “This word”;
    const string space = “ “;
    int space_num = 5; // this number can vary 
    for (int i = 0; i < space_num; i++)
        {
            word.insert(0, space);
        }   
    cout << word;
}

现在这有效,但我想知道是否有更有效的方法来做到这一点。不是在优化我的程序方面,而是在标准实践中更多。

我可以想象两种可能的方法:

1 - 有没有办法创建一个说20个空格的字符串,并附加这些空格的一部分而不是重复添加一个空格。

2 - 有没有办法用可变数量的空格创建字符串并附加?

2 个答案:

答案 0 :(得分:3)

是的,两者都需要一些副本和一个角色:

word.insert(0, space_num, ' ');
word.append(space_num, ' ');

要对齐文字,请记住您可以使用字符串流和<iomanip>标题,例如std::setw

答案 1 :(得分:2)

  

1 - 有没有办法创建一个说20个空格的字符串,并附加这些空格的一部分而不是重复添加一个空格。

是的,试试这个:

 string spaces(20, ' ');
 string portionOfSpaces = spaces.substr(0,10); //first 10 spaces
 string newString = portionOfSpaces + word;

通常,您可以使用substr获取一部分空格并使用该子字符串进行操作。

  

2 - 有没有办法用可变数量的空格创建字符串并附加?

是的,请参阅字符串构造函数:string (size_t n, char c);string::append