C++中几种字符串表示方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++中⼏种字符串表⽰⽅法
最近学习C++时,被⼏种字符串搞的有点乱,这⾥记录⼀下。

c++中有两种风格字符串,分别是:
C++风格字符串
C风格字符串
它们各⾃的声明⽅式如下:
void main(){
string a = "hello"; //C++风格
char *b = "hello"; //C风格
char c[] = "hello"; //C风格
}
C++风格字符串
string是c++标准库定义的类型。

string⽀持下标操作,可以修改string中的⼀部分。

同时string可以看作存储char的vector容器的特化,所以string⽀持⼀般的容器操作。

string a="hello“;
a[3] = 's'; //⽀持下标操作
//通过迭代器输出⾸尾元素
cout<<*a.begin();
auto e = a.end();
cout <<*(--e);
C风格字符串
C风格字符串不是⼀种类型,⽽是⼀种约定俗成的写法。

即字符串放在字符数组中并以空字符结束(’\0‘)。

char ca1[]={'C', '+', '+'}; //没有以’\0'结尾,⾮c风格字符串
char ca2[]={'C', '+', '+', '\0'}; // 显式添加'\0'
char ca3[]="C++"; // 编译器会⾃动在末尾添加空字符
char *cp="C++"; // 编译器会⾃动在末尾添加空字符
其中,使⽤字符数组时,只能在定义的时候初始化,同时,对于字符指针型的字符串(char *str),字符数组可以直接赋值给字符指针型字符串,但反之就不⾏。

char[10] str_1 = "hello"; //正确
char[10] str_2;
char* str_3 = "world";
str_2 = "hello"//错误,此时的str_2是⼀个数组名,不能这样赋值
str_2[0] = 'h'; //正确
str_3 = str_1; //正确
str_1 = str_3; //错误
两种风格字符串间的转换
在编程程序的时候,尽量使⽤string,但有很多时候修改⽼代码的时候不得已会⽤到C风格字符串,所以需要⽤到两种风格间字符串的转换。

1.C风格字符串转换为C++风格字符串
string类能够⾃动将C风格字符串转化为C++风格字符串,也就是说C风格字符串能够直接赋值给string。

string str_1;
char * str_2 = "hello";
char[] str_3 = "world“;
str_1 = str_2; //正确
str_1 = str_3; //正确
2.C++风格字符串转换为C风格字符串
这种转换需要⽤到函数c_str,这个函数返回的是⼀个const *char类型的值。

string str_1 = "hello";
char *str_2 = str_1.c_str(); //错误,c_str()返回的是const char*
const char* str_3 = str_1.c_str() ; //正确。

相关文档
最新文档