Наличие строки пробелов:
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++ способ сделать это?Спасибо.
В дополнение к string :: replace ()
вы можете использовать std :: fill
:
std::fill(str->begin()+pos, str->begin()+pos+length, '#');
//or:
std::fill_n(str->begin()+pos, length, '#');
Если вы попытаетесь заполнить после конца строки, она будет проигнорирована.
с помощью одного из методов replace (...) ( документация ) вы можете делать все, что вам нужно
Во-первых, для объявления простой строки вам не нужны указатели:
std::string str;
Для заполнения строки содержимым заданного размера вы можете использовать соответствующий конструктор:
std::string str( width, ' ' );
Для заполнения строк вы можете использовать метод replace:
str.replace( pos, length, length , '#' );
Вы должны делать удобные проверки. Вы также можете напрямую использовать итераторы.
В более общем случае для контейнеров (строка - это контейнер символов) можно также использовать алгоритм std::fill
std::fill( str.begin()+pos, str.begin()+pos+length, '#' );