【问题标题】:In command line arguments why can't we use string *arr instead of char **arr在命令行参数中为什么我们不能使用 string *arr 而不是 char **arr
【发布时间】:2021-02-17 13:22:03
【问题描述】:

为什么会这样

int main(int argc, char **argv)
{       
        cout << argv[1] << "\n";
}

但不是这个

int main(int argc, string *argv)
{       
        cout << argv[1] << "\n";
}  

字符串不只是char*吗?为什么我们可以使用第一个但不能使用后者? char**string*有什么区别

【问题讨论】:

  • c++ 中没有字符串这样的东西。标准库 string.h 中的字符串是一个帮助库,可以更轻松地处理一系列字符。
  • @NullPointer 在 C++ 中有一个称为字符串的标准库类型。没有什么反对在标准中允许int main(int argc, std::string *argv) 的实现
  • @NullPointer std::string&lt;string&gt; 中定义,&lt;string.h&gt; 是一个 C 头文件(已弃用,但可在 C++ 中使用)并包含处理 char* 的辅助函数,例如 strcmpstrlen
  • @Yksisarvinen 这或多或少是我所说的?

标签: c++ string pointers char command-line-arguments


【解决方案1】:

在命令行参数中为什么我们不能使用string *arr 而不是char **arr

如果您的编译器支持 main 的此类参数,则可以。

但是语言标准不需要支持这些参数,而且我知道没有编译器支持。所以,你不能使用它,因为你的编译器不支持它。

char**string*有什么区别

char** 是指向char* 的指针。 char* 是指向 char 的指针。 char 是函数类型、整数类型和表示编码窄字符的字符类型。

string* 是指向string 的指针。全局命名空间中根本没有 string 这样的东西。 std::string 不是指针,也不是任何基本类型,而是类类型。在标准库的头文件&lt;string&gt;中定义。

string 不只是 char*

不,不是。见上文。

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 2020-01-26
    • 1970-01-01
    • 2017-11-06
    • 2021-05-12
    • 2012-04-28
    • 1970-01-01
    • 2012-02-13
    • 2012-12-05
    相关资源
    最近更新 更多