我是靠谱客的博主 寒冷冬日,最近开发中收集的这篇文章主要介绍c风格字符串和string使用的一些注意点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.对于c风格字符串,通常有如下几种赋值方法(字符串(双引号括起来的)都是以''结尾的!!

char p[]="abcde";这里“abcde”是个常量字符串,存储在常量区。字符串的结尾都是带‘’的,只是没有显示而已,p是个数组。这里的意思是把此常量字符串值复制一份存储在数组p中,p的最后一个位置存储的是‘',数组长度为6。

char p[]={'a','b','c','d','e'};这里就是创建一个字符数组,分别存储字符’a','b','c','d','e',没有''的存在,数组长度是5.这里需要注意的是:strlen函数用来求p的长度结果是错误的,strlen函数的参数类型为char*,p可以看为char*,所以不会报错,但是strlen内部执行时是从char*处开始,直到查询到‘'结束,记录字符串长度,而数组中并没有存储'',所以其会继续向后查询,这样就产生了错误!!!!!

char* p="abcde";这里不同于以上两种,“abcde”是一个常量字符串,p是一个指向此常量的指针,所以这里通过p操作的就是常量区的字符串。由于是常量,所以只能访问,不能对其进行赋值操作,p[3]=‘d’是错误的!二维情况定义如下 char* p[]={"abc","def","fefew"};//p[]是一个指针数组,分别指向其中的一个字符串,p是指向指针数组首的指针,等同于p[0]

2.对于c++中的string类

string a="abcde";这里a是一个对象,常量区的字符串用来给此对象赋值。赋值结果是'a','b','c','d','e'被字符串收纳了,但是''被去除了,也就是说,a对象只有5个字符,并没有''。

同时string类重载了<<,[]操作符。可以使用<<输出string对象(输出的是其中的字符串),同时字符串类中存储的字符串是可以修改及访问的,[]操作符可以访问其中的字符,也可以给某个字符重新赋值!

3.strlen和sizeof的使用

//	sizeof()函数用来确定参数所占的内存大小。通常参数有四种类型。
int a;
string s="abc";
cout<<sizeof(char)<<endl;//1.变量类型。1
cout<<sizeof(a)<<endl;//变量名。a的类型为int,所有,4
cout<<sizeof(s)<<endl;//对象名.注意这里返回的不是“abc”占内存大小!s的类型为string,返回的应该是string的大小。不同的版本string大小不同。这里是32
cout<<sizeof("abc")<<endl;//常量名。4
char* q="abcd";
char p[]="abcd";
cout<<sizeof(p)<<endl;//由于p在内存中并不存在,这里sizeof(p)的大小是数组p的大小,5
cout<<sizeof(q)<<endl;//q是变量,是个指针变量,所以大小不变,4
cout<<sizeof(*q)<<endl;//*q的内容是a,类型是char,所有大小为,1
//	strlen函数返回字符串的长度,不包含''
char* p="abcdef";
cout<<sizeof(p)<<endl;//4
cout<<sizeof(*p)<<endl;//1
cout<<strlen(p)<<endl;//6
char q[]="abcdef";
cout<<sizeof(q)<<endl;//7
cout<<sizeof(*q)<<endl;//1
cout<<strlen(q)<<endl;//6


最后

以上就是寒冷冬日为你收集整理的c风格字符串和string使用的一些注意点的全部内容,希望文章能够帮你解决c风格字符串和string使用的一些注意点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部