7

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

char *a;
string b;

任何人都可以帮助我吗?

4

5 回答 5

16

假设您指的是std::string,string是一个对字符串进行建模的标准库类。

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

如果您有选择,请使用std::string,因为您不必担心记忆。

于 2013-06-18T13:11:36.943 回答
3

char*是指向原始类型的指针:char

string是标准模板库中的第一类对象,它包装了许多功能(例如连接两个字符串)并使其更易于使用。

2个非常不同的实体!

于 2013-06-18T13:14:07.840 回答
0

它很简单,char *a;声明一个类型为 'a' 的指针char,它将指向一个常量字符串或字符数组。String b;将 b 声明为类型的对象。这里的stringString 是一个包含多个字符串操作成员函数(方法)的类。您可以在此处查看更多详细信息: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的大小。

于 2013-06-18T13:35:31.823 回答
0

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

于 2013-06-18T13:36:42.520 回答
0

如果您担心功能,string功能 char*,即您不必担心space

字符*

声明/初始化:char* str = "Use";

附加:XXX

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

细绳

声明/初始化:string str = "Use";

附加:str += " This!"

查找长度:str.length()//全部在一个头文件中

于 2013-06-18T13:39:18.573 回答