c++的字符串的处理

刚学C++那会,真的是对字符串头痛了好久,就是后面自己一不小心还是容易在字符串上犯错误,自己觉得这里就是一个大坑,在看完了c++ primer对于字符串的描述之后感觉自己对于字符串已经没有那种遥不可及的神秘感了,所以还是C++primer大法好。言归正传,该介绍一下字符串的内容了。

1.字符串

字符作为一种基本的数据类型,但是实际中确实字符串用的更多,但比较坑爹的就是C++中是没有专门为字符串写一个基本的数据类型的。但是C++对此的不久也是不少的,比如C++是有一个C-style string的说法的,和字符数组有一点不一样的。

char arr1[11] = "HelloWorld"
char arr2[10]={'H','e','l','l','W','o','r','l','d'};//not a string 
char arr3[11]={'H','e','l','l','W','o','r','l','d','\0'};//the same string as arr1.

我记得很清楚的一句话说明了数组和字符串的区别就是(自己的理解,不是原话)

当你把一个数组传给函数的时候,你只给一个 数组名是不够的(也就四数组的地址)因为你不知道数组的长度,你是不能够放心的对数组进行操作的,所以往往还要传一个数组长度的整数,但是对于一个string来说就不同了,传一个名字就能够获取这个string的信息,因为C++规定了string的结尾都是'\0',所以函数操作string不需要他的长度,只需要通过'\0'来控制


而对于数组的操作肯定就少不了相应指针的帮忙,所以就有了字符指针
char *p1 = arr;//一开始还会觉得奇怪数组名是指针,但是后面学的越多,就觉得没什么了,甚至还有点巧妙
重点来了,就是对于指针的运算,开始的时候真的让人头昏

using namespace std;
int main()
{
     char arr1[12] = "HelloWorld";
     char *p1 = arr;
     cout<<*p1<<endl;
     p1++;
     cout<<*p1<<"at"<<p1<<endl;
     char **p2 = &arr;
     p2++;
     cout<<*p2<<"at"<<p2<<endl;//dangerous
}

输出的结果可能会让你觉得神奇(如果你以前没学过的话)
对于&符号作用于一个数组名,其实是一种指向指针的指针。
对于这个问题,C++primer作了一个比较好的解释,就是*是相当于把一个指针降低了一个等级,而&取址符相当于把指针升了一个等级。例如题中p1=&arr;把p1定义为一个指向整个数组的一个指针对象,而之前的p1=arr;是把p1定义为一个指向数组元素的指针对象。对应++号跳过指针指向的一个最小指向对象。


2.字符串输出

c++中对于字符数组的输出仿佛是别有用心。一开始的时候都会感觉有点奇怪。

char word[] = "helloworld";
char *p1 = word;
cout<<word<<endl;
cout<<*p1<<endl;
cout<<p1<<endl;

结果是

helloworld
helloworld
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,423评论 3 44
  • 一、字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 s...
    JaiUnChat阅读 1,652评论 0 7
  • 本文转自:http://www.cnblogs.com/lidabo/p/5225868.html 1)字符串操作...
    XiaohuiLI阅读 9,473评论 0 0
  • C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一...
    xx_cc阅读 3,687评论 11 39
  • “光阴似箭,日月如梭。”一转眼,时间已经飞奔到2027年,我已经成为一名驻瑞士的知名导游,那里是一个优美而令人向往...
    章鱼去哪儿阅读 244评论 0 2