| (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) (until C++17) | |
basic_string() noexcept(noexcept( Allocator() )): basic_string( Allocator() ) {}
explicit basic_string( const Allocator& alloc ) noexcept;
| (since C++17) | |
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 ) noexcept; | (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) |
template < class T >
basic_string( const T& t, size_type pos, size_type n,
const Allocator& alloc = Allocator() );
| (11) | (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). If InputIt is an integral type, equivalent to basic_string(static_cast<size_type>(first), static_cast<value_type>(last), a).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)
t to a string view sv as if by std::basic_string_view<CharT, Traits> sv = t;, then initializes the string with the subrange [pos, pos + n) of sv as if by basic_string(sv.substr(pos, n), a). This overload only participates in overload resolution if std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> is true.| 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 |
| t | - | object (convertible to 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
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>
#include <cctype>
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"
}
{
// overload resolution selects string(InputIt first, InputIt last) [with InputIt = int]
// which behaves as if string(size_type count, charT ch) is called
std::string s(3, std::toupper('a'));
std::cout << s << '\n'; // "AAA"
}
}Output:
==== Exemplar C-style C-style C-style string Exemplar C++ by example C-style AAA
| 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