Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ char*和string之间的差异_C++_String_Char - Fatal编程技术网

C++ char*和string之间的差异

C++ char*和string之间的差异,c++,string,char,C++,String,Char,我想知道char*和string之间的区别。 例如,在本代码中: char *a; string b; 有人能帮我吗?假设您指的是std::string,string是一个标准的库类,用于建模字符串 char*只是指向单个char的指针。在C和C++中,存在各种函数,这些函数将把单个字符作为一个参数,并沿着内存进行跟踪,直到达到0内存值(通常称为null终止符)。通过这种方式,它对字符串进行建模strlen是一个函数的示例(来自C标准库) 如果您有选择,请使用std::string,因为您不必

我想知道
char*
string
之间的区别。 例如,在本代码中:

char *a;
string b;

有人能帮我吗?

假设您指的是
std::string
string
是一个标准的库类,用于建模字符串

char*只是指向单个char的指针。在C和C++中,存在各种函数,这些函数将把单个字符作为一个参数,并沿着内存进行跟踪,直到达到0内存值(通常称为null终止符)。通过这种方式,它对字符串进行建模
strlen
是一个函数的示例(来自C标准库)


如果您有选择,请使用
std::string
,因为您不必关心内存。

char*
是指向基本类型的指针:
char

string
是标准模板库中的第一类对象,它封装了许多功能(如连接两个字符串),使使用起来更容易


2个完全不同的实体

它很简单,
char*a
声明类型为
char
的指针“a”,它将指向常量字符串或字符数组<代码>字符串b将b声明为
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;
}
#包括
#包括
使用名称空间std;
int main()
{
字符串str(“steve jobson”);

cout
char*
也可以是指向0(第一个)的指针字符数组的位置。它在C中经常使用,不支持使用字符串。

如果您担心功能性,
String
是一个功能性的
char*
,也就是说您不需要担心
空间

char*

声明/初始化:
char*str=“使用”

追加:
XXX

查找长度:
strlen(str);
//需要包含
或创建自己的

字符串

声明/初始化:
string str=“使用”

追加:
str+=“这个!”


查找长度:
str.length()
//所有文件都在一个头文件中

@DavidHeffernan猫可以吃饼干,饼干不能吃猫。@SuvP在极端情况下,饼干可以给猫吃。@SuvP你知道他们之间的共同点吗?@marounnaroun都可以无所事事地躺着吗?(我希望你没有想到nethin技术:p)@SuvP不。它们都不是恐龙。如果你将字符声明为指向字符数组的指针,那么你的答案是正确的,但这里有其他一些东西,它是单个字符即使是单个字符,它也是一个带有一个单元格的数组。*a表示它的值,而&a表示它在内存中的地址。我不明白你使用的是哪个数组是指“逻辑”还是“物理”。既然
string
是一个类,那么它的哪个数据成员持有我们分配给string的文本?