五、String使用
5.1 Strdup()
将const char*变量转化为char*。
5.2 字符串转化以及一些其他操作
String::c_str()返回以’/0’结尾的const char *。
String::data()返回不以’/0’结尾的const char *。
String::copy()拷贝指定个数的字符进入目标字符串,不加’/0’结尾。
String::length()与string::size()等效,均为求不包含’/0’的字符串长度。
String::[]不会进行类型检查,对于下标值是string::size()的返回’/0’。
String::at()进行类型检查,对于下标值是string::size()的抛出out of range异常。
5.3 String::compare()
string s(“abcd”);
s.compare(“abcd”); //返回0
s.compare(“dcba”); //返回一个小于0的值
s.compare(“ab”); //返回大于0的值
s.compare(s); //相等
s.compare(0,2,s,2,2); //用”ab”和”cd”进行比较 小于零
s.compare(1,2,”bcx”,2); //用”bc”和”bc”比较。
5.4 修改操作
s+=str;//加个字符串
s+=”my name is jiayp”;//加个C字符串
s+=’a’;//加个字符
s.append(str);
s.append(str,1,3);//不解释了 同前面的函数参数assign的解释
s.append(str,2,string::npos)//不解释了
s.append(“my name is jiayp”);
s.append(“nico”,5);
s.append(5,’x’);
s.push_back(‘a’);//这个函数只能增加单个字符 对STL熟悉的理解起来很简单
s.insert(0,”my name”);
s.insert(1,str);
string s=”il8n”;
s.replace(1,2,”nternationalizatio”);//从索引1开始的2个替换成后面的C_string
s.erase(13);//从索引13开始往后全删除
s.erase(7,5);//从索引7开始往后删5个
5.5 提取子串和字符串连接
题取子串的函数是:substr(),形式如下:
s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
把两个字符串结合起来的函数是+。(谁不明白请致电120)
5.6 输入输出操作
1.>> 从输入流读取一个string。
2.<< 把一个string写入输出流。
另一个函数就是getline(),他从输入流读取一行内容,直到遇到分行符或到了文件尾。
5.7 搜索与查找
查找函数很多,功能也很强大,包括了:
find()
rfind()
find_first_of()
find_last_of()
find_first_not_of()
find_last_not_of()
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明如下:
第一个参数是被搜寻的对象,如果为”bd”,则表示搜索’b’、’d’这两个字符,而不是”bd”这个字符串。第二个参数(可有可无)指出string内的搜寻起点索引,对于find_first_of()、 find_first_not_of()表示从这个索引点开始顺向搜索,对于find_last_of()、find_last_not_of()表示从这个索引点开始逆向搜索。第三个参数(可有可无)指出搜寻的字符个数。
npos表示string可能拥有的最大元素数。
部分摘自
C++ STRING详解
http://blog.csdn.net/choiquinn/archive/2006/12/09/1436433.aspx