关于string.h,cstring和string的区别:
string.h 是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。
cstring 在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个”c”前缀并且去掉了.h的后缀名,所以string.h头文件成了cstring头文件。所以,string.h,cstring并没有什么太大的区别,小的区别还是有的,在下面就会说到一个不同。
string 是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。
求字符创长度
C/C++ strlen(str)、str.length()、str.size()、sizeof(str)都可以求字符串长度。
其中str.length()、str.size()、sizeof(str)是用于求string类对象的成员函数
string str="dsfasdafasdfasfd";
int len;
len=str.length();//计算字符串长度
cout<<len<<endl;
len=str.size();//计算字符串分配长度
cout<<len<<endl;
len=sizeof(str);//计算字符串所占字节数
cout<<len<<endl;
输出结果:
16
16
8
sizeof有三种语法形式:
1) sizeof (object); //sizeof (对象)
2) sizeof object; //sizeof 对象
3) sizeof (type_name); //sizeof (类型)
strlen(str)是用于求字符数组的长度,其参数是char*。
定位字符串中某一个字符
定义一个string类的对象,初始化为某字符串,获取字符串中某位置的字符有两种方式:用[ ]进行下标访问;用at成员函数访问。
//求string中某一下标下的字符
cout<<str[3]<<endl;
cout<<str.at(3)<<endl;
输出结果:
a
a
字符串逆转操作
C++中有一个reverse函数可以进行逆转操作。
函数原型是:
void reverse (BidirectionalIterator first,BidirectionalIterator last);
可以用来交换数组,字符串的顺序。
reverse(str.begin(),str.end());
cout<<str<<endl;
输出结果:
dfsafdsafadsafsd
怎么将字符变成string字符串
char c;
string str;
stringstream stream;
stream << c;
str = stream.str();