我有一个简单的程序,可以插入或附加一些空格来对齐文本。
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 - 有没有办法用可变数量的空格创建字符串并附加?
答案 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