Как заполнить раздел в строке C ++? - PullRequest
7 голосов
/ 23 мая 2010

Имея строку пробелов:

string *str = new string();
str->resize(width,' ');

Я бы хотел заполнить длину символов в позиции.

В C это будет выглядеть как

memset(&str[pos],'#', length );

Как я могу добиться этого с помощью строки C ++, я пытался

 string& assign( const string& str, size_type index, size_type len );

но это похоже на усечение исходной строки. Есть ли простой способ C ++ сделать это? Спасибо.

Ответы [ 3 ]

10 голосов
/ 23 мая 2010

В дополнение к string::replace() вы можете использовать std::fill:

std::fill(str->begin()+pos, str->begin()+pos+length, '#');
//or:
std::fill_n(str->begin()+pos, length, '#');

Если вы попытаетесь заполнить конец строки, она будет проигнорирована.

7 голосов
/ 23 мая 2010

Во-первых, для объявления простой строки вам не нужны указатели:

std::string str;

Чтобы заполнить строку содержимым заданного размера, вы можете использовать соответствующий конструктор:

std::string str( width, ' ' );

Для заполнения строк вы можете использовать метод замены:

 str.replace( pos, length, length , '#' );

Вы должны сделать удобные проверки.Вы также можете напрямую использовать итераторы.

В более общем случае для контейнеров (строка является контейнером символов), вы также можете использовать алгоритм std :: fill

std::fill( str.begin()+pos, str.begin()+pos+length, '#' );
1 голос
/ 23 мая 2010

одним из методов замены (...) ( документация ) вы можете делать все, что вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...