std::string resize() method
- od C++20
- do 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
.
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
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
#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';
}
}
}
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
Hover to see the original license.