美文网首页c++ primer note
c++的字符串的处理

c++的字符串的处理

作者: lusoer | 来源:发表于2017-02-21 00:49 被阅读17次

刚学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

相关文章

  • C++字符串分割

    很多人对C++的刻板印象是C++不适合处理字符串,其实C++也是有很方便的函数可以处理字符串的。下面我们来讲一下C...

  • char * ,char,string与NSString转化(o

    字符串的是连接object-c和c++的最重要元素,学好字符串的处理,就等于学好了oc和c++的混编 char *...

  • c++的字符串的处理

    刚学C++那会,真的是对字符串头痛了好久,就是后面自己一不小心还是容易在字符串上犯错误,自己觉得这里就是一个大坑,...

  • string对象

    string类型是c++标准模板库设计的数据类型,专门用于字符串处理.在使用c++编程时,优先考虑使用string...

  • RapidJson递归去除空值元素Value

    RapidJson是一款高效的C++处理JSON字符串的库。 教程:http://rapidjson.org/zh...

  • alibaba 字符串编程题

    考点 十六进制的字符串怎么处理?我们可以将其转化成二进制的字符串处理(c++ 里先转化成数字,在通过&1 取每一位...

  • 字符串

    字符串是存储在内存的连续字节中的一系列字符。C++处理字符串的方式有两种: C-风格字符串(C-style str...

  • C++ 处理字符串

    _stringchar* , char[]头文件#include none初始化string s1("abc");...

  • C++字符串分割方法总结

    在一些编程练习中,经常会对字符串进行处理,往往处理之前都会对字符串进行分割来提取各部分信息。在C++中虽然没有像p...

  • C_C++ 字符串数字的转换

    C++ 字符串流 stringstream C++ stream library 中的 stringstream ...

网友评论

    本文标题:c++的字符串的处理

    本文链接:https://www.haomeiwen.com/subject/nerywttx.html