| (1) | ||
explicit basic_string( const Allocator& alloc = Allocator() ); | (until C++14) | |
basic_string() : basic_string( Allocator() ) {}
explicit basic_string( const Allocator& alloc );
| (since C++14) | |
basic_string( size_type count,
CharT ch,
const Allocator& alloc = Allocator() );
| (2) | |
| (3) | ||
basic_string( const basic_string& other,
size_type pos,
size_type count = std::basic_string::npos,
const Allocator& alloc = Allocator() );
| (until C++17) | |
basic_string( const basic_string& other,
size_type pos,
const Allocator& a = Allocator());
| (since C++17) | |
basic_string( const basic_string& other,
size_type pos,
size_type count,
const Allocator& alloc = Allocator() );
| (since C++17) | |
basic_string( const CharT* s,
size_type count,
const Allocator& alloc = Allocator() );
| (4) | |
basic_string( const CharT* s,
const Allocator& alloc = Allocator() );
| (5) | |
template< class InputIt >
basic_string( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
| (6) | |
basic_string( const basic_string& other ); | (7) | |
basic_string( const basic_string& other, const Allocator& alloc ); | (7) | (since C++11) |
basic_string( basic_string&& other ); | (8) | (since C++11) |
basic_string( basic_string&& other, const Allocator& alloc ); | (8) | (since C++11) |
basic_string( std::initializer_list<CharT> init,
const Allocator& alloc = Allocator() );
| (9) | (since C++11) |
explicit basic_string( std::basic_string_view<charT, traits> sv,
const Allocator& alloc = Allocator() );
| (10) | (since C++17) |
Constructs new string from a variety of data sources and optionally using user supplied allocator alloc.
count copies of character ch. The behavior is undefined if count >= npos.[pos, pos+count) of other. If count == npos, if count is not specified, or if the requested substring lasts past the end of the string, the resulting substring is [pos, size()).count characters of character string pointed to by s. s can contain null characters. The length of the string is count. The behavior is undefined if s does not point at an array of at least count elements of CharT, including the case when s is a null pointer.s. The length of the string is determined by the first null character. The behavior is undefined if s does not point at an array of at least Traits::length(s)+1 elements of CharT, including the case when s is a null pointer.[first, last). This overload has the same effect as overload (2) if InputIt is an integral type.other.other using move semantics. other is left in valid, but unspecified state.init. sv, as if by basic_string(sv.data(), sv.size(), alloc)
| alloc | - | allocator to use for all memory allocations of this string |
| count | - | size of the resulting string |
| ch | - | value to initialize the string with |
| pos | - | position of the first character to include |
| first, last | - | range to copy the characters from |
| s | - | pointer to an array of characters to use as source to initialize the string with |
| other | - | another string to use as source to initialize the string with |
| init | - | std::initializer_list to initialize the string with |
| sv | - | std::basic_string_view to initialize the string with |
count
s
first and last
other
alloc is given and alloc != other.get_allocator(), then linearinit
| (since C++17) |
alloc == str.get_allocator()
Initialization with a string literal that contains embedded '\0' characters uses the overload (5), which stops at the first null character. This can be avoided by specifying a different constructor or by using operator""s:
std::string s1 = "ab\0\0cd"; // s1 contains "ab"
std::string s2{"ab\0\0cd", 6}; // s2 contains "ab\0\0cd"
std::string s3 = "ab\0\0cd"s; // s3 contains "ab\0\0cd"#include <iostream>
#include <cassert>
#include <iterator>
#include <string>
int main()
{
{
// string::string()
std::string s;
assert(s.empty() && (s.length() == 0) && (s.size() == 0));
}
{
// string::string(size_type count, charT ch)
std::string s(4, '=');
std::cout << s << '\n'; // "===="
}
{
std::string const other("Exemplary");
// string::string(string const& other, size_type pos, size_type count)
std::string s(other, 0, other.length()-1);
std::cout << s << '\n'; // "Exemplar"
}
{
// string::string(charT const* s, size_type count)
std::string s("C-style string", 7);
std::cout << s << '\n'; // "C-style"
}
{
// string::string(charT const* s)
std::string s("C-style\0string");
std::cout << s << '\n'; // "C-style"
}
{
char mutable_c_str[] = "another C-style string";
// string::string(InputIt first, InputIt last)
std::string s(std::begin(mutable_c_str)+8, std::end(mutable_c_str)-1);
std::cout << s << '\n'; // "C-style string"
}
{
std::string const other("Exemplar");
std::string s(other);
std::cout << s << '\n'; // "Exemplar"
}
{
// string::string(string&& str)
std::string s(std::string("C++ by ") + std::string("example"));
std::cout << s << '\n'; // "C++ by example"
}
{
// string(std::initializer_list<charT> ilist)
std::string s({ 'C', '-', 's', 't', 'y', 'l', 'e' });
std::cout << s << '\n'; // "C-style"
}
}Output:
==== Exemplar C-style C-style C-style string Exemplar C++ by example C-style
| assign characters to a string (public member function) |
|
| assigns values to the string (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/string/basic_string/basic_string