string是c++中常用到的类型,所以关于string的构造方法我们必须清楚:
在c++98中的构造函数有:
| 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 sequence (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); |
在c++11中的构造函数有:
| 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; |
(2) 拷贝构造函数
(3) 子串构造
(4) 用s指向的字符指针构造,直到s的结束或者遇到null字符串结束,因为s中可能含有null字符,所以用这个有一定风险。
(5) 和4的功能差不多,但是5可以指定长度,这样就避免了null结束的问题
(6) 构造一个含有n个字符的字符串,每个字符都是c
(7)从InputIterator中拷贝【first,last)作为新的字符串,注意左闭右开的区间
(8) 和2类似
(9)注意有noexcept修饰
本文详细介绍了C++中string类型的构造方法,包括默认构造、拷贝构造、子串构造等,并对比了C++98与C++11版本的不同之处。
8782

被折叠的 条评论
为什么被折叠?



