构造以特定前缀开头的特定长度的字符串

时间:2011-10-19 07:34:08

标签: c++ string performance append

我需要构造一个以特定前缀开头的特定长度的字符串。有没有更快的方法(在性能方面)来实现以下代码的目标?在这里使用char*会有什么帮助吗?

int strLen = 15;
string prefix = "1234"; // could be a number of any length less than strLen
int prefixLen = prefix.length();
string str = prefix;
for(int i=0;i<strLen-prefixLen;i++)
{
    str.append("9"); // use character '9' as filler
}
printf("str: %s \n", str.c_str());

示例前缀和输出:

prefix: 123, str:  123999999999999
prefix: 1234, str: 123499999999999

此代码中我唯一不希望更改的是'prefix'的类型,它应该保留string

3 个答案:

答案 0 :(得分:3)

试试这个:

std::string content(15, '9'); // start off with all 9s
content.replace(0, 4, "1234"); // replace the first four characters etc.

答案 1 :(得分:2)

    int StrLength = 15;
    string PreFix = "1234";
    string RestOfStr(StrLength - PreFix.length(), '9');
    cout << PreFix << RestOfStr << endl;

字符串类有一个重载的构造函数,它带有一个大小和一个char。 构造函数将创建一个字符串对象,该字符串对象用char重复x次填充

希望这有助于

答案 2 :(得分:1)

试试这个:

unsigned strLen(15);
std::string prefix("1234");
prefix += std::string(strLen - prefix.length(), '9');