来源:https://cplusplus.com/reference/string/string/string/
序号 | 函数声明 |
---|---|
default (1) | string(); |
copy (2) | string (const string& str); |
substring (3) | string (const string& str, size_t pos, size_t len = npos); |
from c-string (4) | string (const char* s); |
from buffer (5) | string (const char* s, size_t n); |
fill (6) | string (size_t n, char c); |
range (7) | template <class InputIterator> string (InputIterator first, InputIterator last); |
initializer list (8) | string (initializer_list<char> il); |
move (9) | string (string&& str) noexcept; |
Construct string object
Constructs a string
object, initializing its value depending on the constructor version used:
-
(1) empty string constructor (default constructor) Constructs an
empty
string, with alength
of zero characters. -
(2) copy constructor Constructs a copy of str.
-
(3) substring constructor Copies the portion of str that begins at the character position pos and spans len characters (or until the end of str, if either str is too short or if len is
string::npos
). -
(4) from c-string Copies the null-terminated character sequence (C-string) pointed by s.
-
(5) from buffer Copies the first n characters from the array of characters pointed by s.
-
(6) fill constructor Fills the string with n consecutive copies of character c.
-
(7) range constructor Copies the sequence of characters in the range [first,last), in the same order.
-
(8) initializer list Copies each of the characters in il, in the same order.
-
(9) move constructor Acquires the contents of str. str is left in an unspecified but valid state.
All constructors above support an object of member type allocator_type as additional optional argument at the end, which for string is not relevant (not shown above, see basic_string's constructor for full signatures).
Parameters
-
str Another string object, whose value is either copied or acquired.
-
pos Position of the first character in str that is copied to the object as a substring. If this is greater than str's length, it throws out_of_range. Note: The first character in str is denoted by a value of 0 (not 1).
-
len Length of the substring to be copied (if the string is shorter, as many characters as possible are copied). A value of string::npos indicates all characters until the end of str.
-
s Pointer to an array of characters (such as a c-string).
-
n Number of characters to copy.
-
c Character to fill the string with. Each of the n characters in the string will be initialized to a copy of this value.
-
first, last Input iterators to the initial and final positions in a range. The range used is [first,last), which includes all the characters between first and last, including the character pointed by first but not the character pointed by last. The function template argument InputIterator shall be an input iterator type that points to elements of a type convertible to char. If InputIterator is an integral type, the arguments are casted to the proper types so that signature (5) is used instead.
-
il An initializer_list object. These objects are automatically constructed from initializer list declarators.
size_t
is an unsigned integral type.
Example
// string constructor
#include <iostream>
#include <string>
int main ()
{
std::string s0 ("Initial string");
// constructors used in the same order as described above:
std::string s1;
std::string s2 (s0);
std::string s3 (s0, 8, 3);
std::string s4 ("A character sequence");
std::string s5 ("Another character sequence", 12);
std::string s6a (10, 'x');
std::string s6b (10, 42); // 42 is the ASCII code for '*'
std::string s7 (s0.begin(), s0.begin()+7);
std::cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;
std::cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6a: " << s6a;
std::cout << "\ns6b: " << s6b << "\ns7: " << s7 << '\n';
return 0;
}
Output:
s1:
s2: Initial string
s3: str
s4: A character sequence
s5: Another char
s6a: xxxxxxxxxx
s6b: **********
s7: Initial