我想知道char *
和string
之间的区别。
例如,在此代码中:
char *a;
string b;
有人可以帮我吗?
答案 0 :(得分:14)
假设您指的是std::string
,string
是建模字符串的标准库类。
char *只是指向单个char的指针。在C和C ++中,存在各种函数,它们将指向单个char的指针作为参数,并将沿着内存跟踪,直到达到0内存值(通常称为 null终止符)。以这种方式,它模拟一串字符; strlen
是执行此操作的函数(来自C标准库)的示例。
如果您有选择,请使用std::string
,因为您不必关心记忆。
答案 1 :(得分:3)
char*
是指向基本类型的指针:char
string
是标准模板库中的第一个类对象,它包含许多功能(如连接两个字符串)并使其更易于使用。
2个非常不同的实体!
答案 2 :(得分:0)
简单,char *a;
声明类型为char
的指针'a',它将指向一个常量字符串或字符数组。 String b;
将b声明为string
type.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的大小。
答案 3 :(得分:0)
char*
也可以是指向字符数组的0(第一)位置的指针。它经常在 C 中使用,其中不支持使用String。
答案 4 :(得分:0)
如果您担心功能,string
是功能 char*
,您无需担心space
<强>字符* 强>
声明/初始化:char* str = "Use";
追加:XXX
查找长度:strlen(str);
//需要包含<string.h>
或创建自己的
<强>字符串强>
声明/初始化:string str = "Use";
追加:str += " This!"
在一个头文件中找到长度:str.length()
//全部