C++-String和char*之间有没有区别?一直都比较模糊

发布于 2016-10-25 21:02:52 字数 0 浏览 1310 评论 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

虐人心 2017-05-27 19:47:46

string 作为一个类在c++中存在,你可以通过所创建的string对象来调用不同的方法操纵该对象,例如通过+操作符来实习字符串的拼接,等等。也可以获取字符串的属性,例如长度。
但是char是作为一个基本类型,一个关键字在c/c++中存在(c++中没有string关键字),char* 很明显也就是一个指针。

char* 是指向字符串的指针(其实严格来说,它是指向字符串的首个字母),你可以让它指向一串常量字符串,例如:

char* str1 = "hello world"

也可以自己分配空间来存储字符串,例如:

char* str2 = new char[12];

后者需要注意的是,在分配空间的时候要考虑的占位,它是字符串结束的标志,所以分配空间的大小至少应该是字符串的长度+1。

现在,你可以发挥你的想象力来对字符串进行操作,例如我需要知道这个字符串的长度,那么最方便的就是调用strlen函数,它会帮助你计算出字符串的长度,当然,你也可以编写自己的函数来对这个字符串进行处理。如果你想要两个字符串拼接起来,你还需要另外再分配空间,然后将字符串逐个添加到新的空间,这一切都需要你自己完成。

所以string的出现就是为了让这一切变得简单,它帮你管理char*,例如:

string strobj1("hello world");

我们把"hello world"常量字符串交给了strobj帮我们打理,你想知道它的长度,就调用length()这个方法。

strobj1.length();

你需要拼接两个字符串,直接使用+操作符就可以了。

strobj2 strobj2("hello cpp");
strobj3 catstr = strobj1+strobj2;

更多的方法,你可以参考:这里
想一想,一个+号操作总比写一堆循环来得简单吧。如果你不喜欢这个string类,你还可以自己编写一个。但是你没有办法去重新实现char*。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文