您的位置:首页 > 其它

string字符串:#include <string>

2013-12-03 18:52 369 查看
typedef basic_string<char> string;
1.string str("xxx");//在栈中隐士实例化string对象
2.string str = "xxx";
3.string str = string("xxx");//显示构造
4.string* str = new string("xxx");//在堆内存实例化对象
delete str;
5.string str;//空串不会显示任何内容
string str(""/*注意不能接受NULL指针*/);//同上
string str(pStr ? "" : pStr);
6.从c --> c++
char cStr[] = "xxx";
string str(cStr);
7.从c++ --> c
const char* str2 = str.c_str();//将字符串的首地址变为const类型字符串的指针
8.string的操作符重载:
str+str、str+=str、str=str3、str>str3、str==str3......
= + += > >= < <= == !=
9.string函数:注意下标都从0开始
(1)str.size()//字符串的缓冲区大小,不包含\0
(2)str.length()//获取元素个数,不包含\0
(3)str.resize(5);//将字符串缓冲区大小设置为5,如果多了则截断,如果少了全部补'\0'.
(4)str+="xxxxxx";//如果str本身后面有'\0'那么,所加字符串添加到后面,输出str的结果到'\0'截止,即后面加的字符串不会输出。
但是缓冲区的大小加了所加字符串的长度
(5)str.compare(str2);//比较字符串的大小
1:str > str2
0:str = str2
-1:str < str2
(6)str.append(str2);//将str2拼接到str后面
str.append(str2, n, m);//从str2字符串的第n个(下标从0开始)开始的m个字符拼接到str后面
如:string str1("hello");string str2("the world !");str1.append(str2, 4, 5);结果:helloworld
(7)str.at(index) == str[index]
相同的是下标都从0开始
不同的是 [] 没有检查数组越界(取出来未知值),而at检查是否越界访问,并抛出out_of_range& ex异常
(8)str.find(str2);//在str中查找str2,如果找到就返回str2在str1中开始位置的下标(下标类型为:string::size_type)
如果下标值等于:string::npos(全局变量),那么表示到了str1结尾
(9)str.insert(pos, str2);//在下标为pos的位置插入str2
另外一个版本:str.insert(pos, str2, n, m);//在下标为pos的位置插入m个字符, 从str2的第n个字符开始(开始下标为0)
(10)str.erase(pos, n);//从下标为pos的地方开始删除n个字符
(11)pos = str.find_first_of(str2, pos);//在str中找到第一个字符,这个字符能和str2中任何一个字符匹配,并返回这个字符在str1中的下标
否则返回npos(文件结尾)
(12)类似拷贝构造函数和获取子串
string str2(str1, pos, n);//在str1中从pos下标处开始的n个字符截取作为参数构造str2
str2 = str1.substr(pos, n);//在str1中从pos下标开始截取n个字符赋值给str2
(13)str1.replace(pos, size, str2);//将str1的pos下标处开始size个字符替换为str2,str1的长度可能随str2的长度变化
string str1 ("123456789abcdefghtr");
str1.replace (9, 2, "hello");
123456789hellocdefghtr
本文出自 “BaggerSky” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐