C++String头⽂件详解
对于⼀些喜欢⽤c++编程或者做题的⼈来说,字符串string是经常要⽤到的。所以我们要了解其中的⼀些函数以及使⽤⽅法清单⼀,声明:
(1)string s //⽣成⼀个空字符串s
(2)string s(str) //拷贝构造函数 ⽣成str的复制品
(3)string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
(4)string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
(5)string s(cstr) //将C字符串作为s的初值
(6)string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
(7)string s(num,c) //⽣成⼀个字符串,包含num个c字符
(8)string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
(9)s.~string() //销毁所有字符,释放内存
清单⼆,函数:
(1)swap() //交换两个字符串的内容
(2)==,!=,<,<=,>,>=,compare() //⽐较字符串
(3) +=,append(),push_back() //在尾部添加字符
(4)insert() //插⼊字符
(4) erase() //删除字符
(5)clear() //删除全部字符
(6)replace() //替换字符
(7)+ //串联字符串
(8) ==,!=,<,<=,>,>=,compare() //⽐较字符串
(9)size(),length() //返回字符数量
(10) max_size() //返回字符的可能最⼤个数
(11)empty() //判断字符串是否为空
(12) capacity() //返回重新分配之前的字符容量
(13) reserve() //保留⼀定量内存以容纳⼀定数量的字符
(14) [ ], at() //存取单⼀字符
(15)>>,getline() //从stream读取某值
(16)<< //将谋值写⼊stream
(17) copy() //将某值赋值为⼀个C_string
(18) c_str() //将内容以C_string返回
(19)data() //将内容以字符数组形式返回
(20)substr() //返回某个⼦字符串
(21)查函数
(22)begin() end() //提供类似STL的迭代器⽀持
(23)rbegin() rend() //逆向迭代器
(24)get_allocator() //返回配置器
经常使⽤的函数详解:
(1)c_str()
功能:从⼀个string得到c类型的字符数组
原型:const char * c_str();
c_str()函数返回⼀个指向正规C字符串的指针常量, 内容与本string串相同
这是为了与c语⾔兼容,在c语⾔中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式
注意:⼀定要使⽤strcpy()函数 等来操作⽅法c_str()返回的指针
⽐如:最好不要这样:
char* c;
string s="1234";
c = s.c_str();//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理,同时,编译器也将报错——将⼀个const char *赋与⼀个char *
应该这样⽤:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是⼀个临时指针,不能对其进⾏操作
c_str()返回的是⼀个分配给const char * 的地址,其内容已设定为不可变更,如果再把此地址赋给⼀个可以变更内容的char * 变量,就会产⽣冲突,在2010中是不被允许的。但是如果放⼊函数调⽤,或者
直接输出,因为这些函数和输出都是把字符串指针作为 const char*引⽤的,所以不会有问题。
再举个例⼦
c_str() 以 char * 形式传回 string 内含字符串
如果⼀个函数要求char * 参数,可以使⽤c_str()⽅法:
string s ="Hello World!";
c++string类型printf("%s", s.c_str());//输出 "Hello World!"
(2)substr()函数
substr(start, length)⽅法:返回⼀个从指定位置开始,并具有指定长度的⼦字符串。
参数:
1.start:必选。所需的⼦字符串的起始位置。字符串中第⼀个字符的索引为 0。
2.length:可选项。返回的⼦字符串中包含的字符数。
int main(){
string s ="12345";
string s1 = s.substr(3);
string s2 = s.substr(2,3);
cout << s1 <<' '<< s2;
return0;
}
输出为:45 345
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论