头文件:#include <string>
1、声明一个字符串变量很简单:
string Str;
string Str;
a) string s; //生成一个空字符串s
b) string s(str) //拷贝构造函数 生成str的复制品
c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
e) string s(cstr) //将C字符串作为s的初值
f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num,c) //生成一个字符串,包含num个c字符
h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
i) s.~string() //销毁所有字符,释放内存
b) string s(str) //拷贝构造函数 生成str的复制品
c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
e) string s(cstr) //将C字符串作为s的初值
f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num,c) //生成一个字符串,包含num个c字符
h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
i) s.~string() //销毁所有字符,释放内存
2.字符串操作函数
这里是C++字符串的重点
1) =,assign() //赋以新值
“=”的用法不作详细说明,assign用法如下:
# include <iostream>
# include <string>
using namespace std;
int main()
{
string str1 = "yesterday once more";
string str2 ("my heart go on");
string str3,str4;
str3.assign(str2,3,6); // = heart
str4.assign(str2,3,string::npos); // = heart go on (从2开始到结尾赋给str4)
str4.assign("gaint"); // =gaint
str4.assign("nico",5); // = nico,超出长度会发生什么。。。
str4.assign(5,'x'); // = xxxxx
cout<<str4<<endl;
getchar();
return 0;
}
2) swap() //交换两个字符串的内容
用法如下:
# include <iostream>
# include <string>
using namespace std;
int main()
{
string str1 = "yesterday once more";
string str2 ("my heart go on");
str2.swap(str1);
cout<<str1<<endl; // = my heart go on
cout<<str2<<endl; // = yesterday once more
getchar();
return 0;
}
3)
+=,append(),push_back()
*//在尾部添加字符*
增加字符(这里说的增加是在尾巴上),函数有 +=、append()、push_back()。举例如下:
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’);//这个函数只能增加单个字符
4) erase() //删除字符**
s.erase(13);//从索引13开始往后全删除
s.erase(7,5);//从索引7开始往后删5个
s.erase(7,5);//从索引7开始往后删5个
5) replace() //替换字符**
string s=”il8n”;
s.replace(1,2,”nternationalizatio”);//从索引1开始的2个替换成后面的
C_string s = internationalization
string s=”il8n”;
s.replace(1,2,”nternationalizatio”);//从索引1开始的2个替换成后面的
C_string s = internationalization
6) ==,!=,<,<=,>,>=,compare() //比较字符串
C ++字符串支持常见的比较操作符(>,>=,<,<=,==,!=),甚至支持string与C-string的比较(如 str<”hello”)。在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得比较。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。
另一个功能强大的比较函数是成员函数compare()。他支持多参数处理,支持用索引值和长度定位子串来进行比较。他返回一个整数来表示比较结果,返回值意义如下:0-相等 >0-大于 <0-小于。举例如下:
string s(“abcd”);
s.compare(“abcd”); //返回0
s.compare(“dcba”); //返回一个小于0的值
s.compare(“ab”); //返回大于0的值
s.compare(s); //相等
C ++字符串支持常见的比较操作符(>,>=,<,<=,==,!=),甚至支持string与C-string的比较(如 str<”hello”)。在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得比较。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。
另一个功能强大的比较函数是成员函数compare()。他支持多参数处理,支持用索引值和长度定位子串来进行比较。他返回一个整数来表示比较结果,返回值意义如下:0-相等 >0-大于 <0-小于。举例如下:
string s(“abcd”);
s.compare(“abcd”); //返回0
s.compare(“dcba”); //返回一个小于0的值
s.compare(“ab”); //返回大于0的值
s.compare(s); //相等
7)
size(),length()
//返回字符数量
现有的字符数,函数是size()和length(),他们等效。
现有的字符数,函数是size()和length(),他们等效。
8) substr() //返回某个子字符串
substr(),形式如下:
s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
substr(),形式如下:
s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符