string::npos 指定了string 对象最大允许长度,通常是最大的unsigned int值
构造函数
string(const char * s) 初始化为s指向的NBTS (以空字符结束的传统的C 字符串)
string(size_type n, char c) 创建包含n个元素的string对象,每个元素都初始化为c
string(const string & str) 初始化为另一个string对象str (复制构造函数)
string() 默认长度为0 的string对象 (默认构造函数)
string(const char * s, size_type n) 初始化为NBTS的前n个字符,即使超尾
template<class Iter>
string(Iter begin, Iter end) 初始化为区间[begin,end) 内的字符,begin,end行为像指针
string(const string & str,
string size_type pos = 0,
size_type n = npos) 初始化为str 中从位置pos开始的n个字符(或到结尾)
string(string && str) noexcept C++11新增,初始化为str,并可能修改str (移动构造函数)
string(initializer_list<char> il) C++11新增,初始化为初始化列表il 中的字符
输入
C-风格字符串输入方式
char ch[10];
cin >>ch; 方法一
cin.getline(ch, 10); 方法二,转换换行,istream类方法
cin.get(ch, 10); 方法三,换行留在输入流
string 类输入方式
string str;
cin >> str; 方法一
getline(cin, str); 方法二,独立函数
* cin.getline() 和 getline() 都有第三个可选参数,定义输入的边界,默认为\n
string 版本的getline() 停止读取的情况
1.到达文件尾,输入流的eofbit被设置,fail()和eof() 都将返回true
2.遇到分节字符(默认\n),将把分界字符从输入流删除,但不存储它
3.读取字符数达到最大(string::npos 和可供分配的内存字节数中较小的一个),输入流的failbit被设置,fail()将返回true.
string 版本的 operator>>() 函数不断读取,直到遇到空白字符并将其留在输入队列。
方法
capacity() 返回当前分配给字符串的内存块大小
reserve() 请求内存块的最小长度
构造函数
string(const char * s) 初始化为s指向的NBTS (以空字符结束的传统的C 字符串)
string(size_type n, char c) 创建包含n个元素的string对象,每个元素都初始化为c
string(const string & str) 初始化为另一个string对象str (复制构造函数)
string() 默认长度为0 的string对象 (默认构造函数)
string(const char * s, size_type n) 初始化为NBTS的前n个字符,即使超尾
template<class Iter>
string(Iter begin, Iter end) 初始化为区间[begin,end) 内的字符,begin,end行为像指针
string(const string & str,
string size_type pos = 0,
size_type n = npos) 初始化为str 中从位置pos开始的n个字符(或到结尾)
string(string && str) noexcept C++11新增,初始化为str,并可能修改str (移动构造函数)
string(initializer_list<char> il) C++11新增,初始化为初始化列表il 中的字符
输入
C-风格字符串输入方式
char ch[10];
cin >>ch; 方法一
cin.getline(ch, 10); 方法二,转换换行,istream类方法
cin.get(ch, 10); 方法三,换行留在输入流
string 类输入方式
string str;
cin >> str; 方法一
getline(cin, str); 方法二,独立函数
* cin.getline() 和 getline() 都有第三个可选参数,定义输入的边界,默认为\n
string 版本的getline() 停止读取的情况
1.到达文件尾,输入流的eofbit被设置,fail()和eof() 都将返回true
2.遇到分节字符(默认\n),将把分界字符从输入流删除,但不存储它
3.读取字符数达到最大(string::npos 和可供分配的内存字节数中较小的一个),输入流的failbit被设置,fail()将返回true.
string 版本的 operator>>() 函数不断读取,直到遇到空白字符并将其留在输入队列。
方法
capacity() 返回当前分配给字符串的内存块大小
reserve() 请求内存块的最小长度