Как заполнить раздел в строке C++?

Наличие строки пробелов:

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++ способ сделать это?Спасибо.

7
задан stacker 23 May 2010 в 09:53
поделиться

3 ответа

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

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

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

10
ответ дан 6 December 2019 в 10:48
поделиться

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

1
ответ дан 6 December 2019 в 10:48
поделиться

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

std::string str;

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

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

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

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

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

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

std::fill( str.begin()+pos, str.begin()+pos+length, '#' );
7
ответ дан 6 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: