【问题标题】:differences between char * and stringchar * 和字符串的区别
【发布时间】:2013-06-18 13:10:28
【问题描述】:

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

char *a;
string b;

谁能帮帮我?

【问题讨论】:

  • @DavidHeffernan 猫可以吃饼干,饼干不能吃猫。
  • @SuvP 在极端情况下,饼干可以来猫。
  • @SuvP 你知道他们之间有什么共同点吗?
  • @MarounMaroun 两者都可以无所事事吗? (我希望你没有期待 nethin 技术:P)
  • @SuvP 不,它们都不是恐龙。

标签: c++ string char


【解决方案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的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-24
        • 1970-01-01
        • 2014-07-26
        • 2013-11-11
        • 1970-01-01
        • 2016-09-11
        • 2021-04-10
        • 2020-08-17
        相关资源
        最近更新 更多