std::string resize() method
- since C++20
- until C++20
// (1) Non const version only
constexpr void resize( size_type count );
// (2) Non const version only
constexpr void resize( size_type count, CharT ch );
// (1) Non const version only
void resize( size_type count );
// (2) Non const version only
void resize( size_type count, CharT ch );
Resizes the string to contain count
characters.
If the current size is less than count
, additional characters are appended:
- (1) Initializes appended characters to
CharT()
('\0'
ifCharT
ischar
). - (2) Initializes appended characters to
ch
.
important
If the current size is greater than count
, the string is reduced to its first count
elements.
Parameters
count
- new size of the stringch
- character to initialize the new characters with
Return value
(none)
Complexity
important
This section requires improvement. You can help by editing this doc page.
Exceptions
std::length_error
if count > max_size()
. Any exceptions thrown by corresponding Allocator
.
Example
Main.cpp
#include <iostream>
#include <iomanip>
#include <stdexcept>
int main()
{
const unsigned desired_length{ 8 };
std::string long_string( "Where is the end?" );
std::string short_string( "H" );
std::cout << "Basic functionality:\n"
<< "Shorten:\n"
<< "1. Before: " << quoted( long_string ) << '\n';
long_string.resize( desired_length );
std::cout << "2. After: " << quoted( long_string ) << '\n';
std::cout << "Lengthen with a given value 'a':\n"
<< "3. Before: " << quoted( short_string ) << '\n';
short_string.resize( desired_length, 'a' );
std::cout << "4. After: " << quoted( short_string ) << '\n';
std::cout << "Lengthen with char() == " << static_cast<int>(char()) << '\n'
<< "5. Before: " << quoted( short_string ) << '\n';
short_string.resize( desired_length + 3 );
std::cout << "6. After: \"";
for (char c : short_string) {
std::cout << (c == char() ? '@' : c);
}
std::cout << "\"\n\n";
std::cout << "Errors:\n";
{
std::string s;
try {
// size is OK, no length_error
// (may throw bad_alloc)
s.resize(s.max_size() - 1, 'x');
} catch (const std::bad_alloc& ex) {
std::cout << "1. Exception: " << ex.what() << '\n';
}
try {
// size is OK, no length_error
// (may throw bad_alloc)
s.resize(s.max_size(), 'x');
} catch (const std::bad_alloc& ex) {
std::cout << "2. Exception: " << ex.what() << '\n';
}
try {
// size is BAD, throw length_error
s.resize(s.max_size() + 1, 'x');
} catch (const std::length_error& ex) {
std::cout << "3. Length error: " << ex.what() << '\n';
}
}
}
Output
Basic functionality:
Shorten:
1. Before: "Where is the end?"
2. After: "Where is"
Lengthen with a given value 'a':
3. Before: "H"
4. After: "Haaaaaaa"
Lengthen with char() == 0
5. Before: "Haaaaaaa"
6. After: "Haaaaaaa@@@"
Errors:
1. Exception: std::bad_alloc
2. Exception: std::bad_alloc
3. Length error: basic_string::_M_replace_aux
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.
Hover to see the original license.