char * 和字符串的区别
Posted
技术标签:
【中文标题】char * 和字符串的区别【英文标题】:differences between char * and string 【发布时间】:2013-06-18 13:10:28 【问题描述】:我想知道char *
和string
之间的区别。
例如在这段代码中:
char *a;
string b;
谁能帮帮我?
【问题讨论】:
@DavidHeffernan 猫可以吃饼干,饼干不能吃猫。 @SuvP 在极端情况下,饼干可以来猫。 @SuvP 你知道他们之间有什么共同点吗? @MarounMaroun 两者都可以无所事事吗? (我希望你没有期待 nethin 技术:P) @SuvP 不,它们都不是恐龙。 【参考方案1】:假设您指的是std::string
,string
是一个对字符串建模的标准库类。
char* 只是一个指向单个字符的指针。在 C 和 C++ 中,存在各种函数,它们将指向单个 char 的指针作为参数并沿内存跟踪,直到达到 0 内存值(通常称为 null 终止符)。通过这种方式,它模拟了一个字符串; strlen
是执行此操作的函数示例(来自 C 标准库)。
如果您有选择,请使用std::string
,因为您不必担心记忆。
【讨论】:
既然string
是一个类,它的数据成员保存着我们分配给字符串的文本?【参考方案2】:
char*
是指向原始类型的指针:char
string
是标准模板库中的第一类对象,它封装了许多功能(例如连接两个字符串)并使其更易于使用。
2 个非常不同的实体!
【讨论】:
【参考方案3】:如果您担心功能,string
是一个功能 char*
,即您不必担心space
字符*
声明/初始化:char* str = "Use";
附加:XXX
查找长度:strlen(str);
//需要包含<string.h>
或创建自己的
字符串
声明/初始化:string str = "Use";
附加:str += " This!"
查找长度:str.length()
//全部在一个头文件中
【讨论】:
【参考方案4】:char*
也可以是指向字符数组第 0 位(第一个)的指针。 C中经常使用,不支持使用String。
【讨论】:
如果您将 char 声明为指向字符数组的指针,那么您的答案将是正确的,但这里是其他东西,它是单个字符 即使是单个字符,它也是一个包含一个单元格的数组。 *a 指的是它的值,而 &a 指的是它在内存中的地址。 我不明白你指的是哪个数组,“逻辑”或“物理”。【参考方案5】:很简单,char *a;
声明了一个char
类型的指针'a',它将指向一个常量字符串或字符数组。 String b;
将 b 声明为 string
类型的对象。这里的 String 是一个包含多个字符串操作成员函数(方法)的类。您可以在这里查看更多详细信息:http://www.cplusplus.com/reference/string/string/
描述string
对象及其成员函数的示例程序如下:
#include <iostream>
#include <string>
using namespace std;
int main ()
string str ("steve jobson");
cout <<"hello the name of steve jobs consists of"<< str.size() << " characters.\n";
return 0;
str
被声明为字符串对象,调用成员函数size()
获取str的大小。
【讨论】:
以上是关于char * 和字符串的区别的主要内容,如果未能解决你的问题,请参考以下文章