Построение строки определенной длины, начиная с определенного префикса - PullRequest
0 голосов
/ 19 октября 2011

Мне нужно создать строку определенной длины, начиная с определенного префикса.Есть ли более быстрый способ ( с точки зрения производительности ) для достижения цели следующего фрагмента кода?Было бы полезно использовать 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 ]

3 голосов
/ 19 октября 2011

попробуйте это:

std::string content(15, '9'); // start off with all 9s
content.replace(0, 4, "1234"); // replace the first four characters etc.
2 голосов
/ 19 октября 2011
    int StrLength = 15;
    string PreFix = "1234";
    string RestOfStr(StrLength - PreFix.length(), '9');
    cout << PreFix << RestOfStr << endl;

класс строки имеет перегруженный конструктор, принимая размер и символ.Конструктор создаст строковый объект, заполненный символом, повторенным x количество раз

Надеюсь, это поможет

1 голос
/ 19 октября 2011

Попробуйте это:

unsigned strLen(15);
std::string prefix("1234");
prefix += std::string(strLen - prefix.length(), '9');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...