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::stringstring 是一个对字符串建模的标准库类。

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 * 和字符串的区别的主要内容,如果未能解决你的问题,请参考以下文章

char * 和字符串的区别

char *和const char *之间的区别?

Haskell中[[Char]]和[Char]有什么区别?

const char*和char* const的区别

const char []和const char之间的区别*

mysql中char和varchar有啥区别?