C++中的字符串类型

来源:互联网 发布:爸爸网络用语叫法 编辑:程序博客网 时间:2024/05/15 06:08

首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>

如下:

 #include <string> //注意这里不是string.hstring.hC字符串头文件

 #include <string>

using namespace std;

1.声明一个C++字符串

 声明一个字符串变量很简单:

string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string

的默认的构造函数,这个函数所作的就是把tr初始化为一个空字符串。String类的构造函数和析构函数如下:

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个字符作为字符串

的初值。

g)string s(num,c) //生成一个字符串,包含numc字符

h)string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s

的初值

i) s.~string() //销毁所有字符,释放内存

2.字符串操作函数

这里是

C++

字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人

可以在这里找自己喜欢的函数,再到后面看他的详细解释。

 

a) =,assign()    //赋以新值

b) swap()    //交换两个字符串的内容

c) +=,append(),push_back() //在尾部添加字符

d) insert() //插入字符

e) erase() //删除字符

f) clear() //删除全部字符

g) replace() //替换字符

h) + //串联字符串

i)==,!=,<,<=,>,>=,compare()   //比较字符串

j) size(),length()   //返回字符数量

k) max_size() //返回字符的可能最大个数

l) empty()   //判断字符串是否为空

m) capacity() //返回重新分配之前的字符容量

n) reserve() //保留一定量内存以容纳一定数量的字符

o) [ ], at() //存取单一字符

p) >>,getline() //stream读取某值

q) <<   //将谋值写入stream

r) copy() //将某值赋值为一个C_string s)c_str() //将内容以C_string返回

t) data() //将内容以字符数组形式返回

u) substr() //返回某个子字符串

v)查找函数w)begin() end()//提供类似STL的迭代器支持

x) rbegin() rend() //逆向迭代器

y) get_allocator() //返回配置器

下面详细介绍:

2.1 C++字符串和C字符串的转换

C++提供的由C++字符串得到对应的C_string的方法是使用data()c_str()copy(),其中,data()以字符数组的形式返回字符串内容,但并不添加'/0'

c_str()返回一个以„/0'结尾的字符数组,而copy()则把字符串的内容复或写入既有的c_string

 字符数组内。C++字符串并不以/0'结尾。我的建议是在程序中能使用C++字符串就使用,除非万不得已不选用c_string

 2.2大小和容量函数一个C++字符串存在三种大小:

a)现有的字符数,函数是size()length(),他们等效。Empty()用来检查字符串是否为空。

b)max_size()这个大小是指当前C++字符串最多能包含的字符数,很可能和机器本身的限制或者字符串所在位置连续内存的大小有关系。我们一般情况下不用关心他,应该大小足够我们用的。但是不够用的话,

会抛出length_error异常

c)capacity()重新分配内存之前string所能包含的最大字符数。这里另一个需要指出的是

eseve()函数,这个函数为string重新分配内存。重新分配的大小由其参数决定,默认参数为0,这时候会对string进行非强制性缩减。

 

 

0 0
原创粉丝点击