我需要构造一个以特定前缀开头的特定长度的字符串。有没有更快的方法(在性能方面)来实现以下代码的目标?在这里使用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
。
答案 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');