繁体   English   中英

字符和字符串的区别

[英]Difference between char and string

字符串只是一个字符数组(末尾有一个 '\0' 或 null 字符)。 但是当我在 c++ 中使用 getline function 时,如果我使用 char,它会给我一个错误,但字符串没有错误。 以下作品:

#include<iostream>
int main()
{
    std::string name;
    std::cout<<"Name: ";
    getline(std::cin,name);
    std::cout<<"Name: "<<name;
    return 0;
}

但是当我使用 char 而不是 string.It 不起作用

#include<iostream>
int main()
{
    char name[50];
    std::cout<<"Name: ";
    getline(std::cin,name);
    std::cout<<"Name: "<<name;
    return 0;
}

`

您可能会想到 C 中的 cs50.h 之类的东西,其中stringchar*的 typedef。 在 C++ 中情况并非如此,其中std::string实际上是完全不同的类型。

有一种getline()形式可以与char*一起使用,但不是免费的 function。 它是std::istream的成员 function , std::cin继承。 这是您修改后的代码以使用它:

#include<iostream>
int main()
{
    char name[50];
    std::cout<<"Name: ";
    std::cin.getline(name, sizeof name);
    std::cout<<"Name: "<<name;
    return 0;
}

您正在混合 C 字符串和 C++ 字符串。

“字符串只是一个字符数组(末尾有一个 '\0' 或 null 字符)。” 这对于 C 字符串是正确的。 您的代码中的std::string是 C++ 字符串。 它们是根本不同的。 C++ 字符串不是数组字符。 这是 class std::string的 object 。 您可以将 C 字符串复制到 C++ 字符串中,并且可以使用 Z0D61078370CAD1D4122F 初始化 C++ 字符串。 您可以使用std::string::c_str()将 C++ 字符串转换为 const C 字符串。

std::getline需要一个std::string作为第二个参数。 您不能将它与 C 字符串一起使用。

std::string 是由字符组成的 class,而不是字符数组。 这意味着这两种类型是不同的。 见 std::string 定义:这里

getline function 需要一个字符串。 它不适用于字符数组。 查看文档:这里

这很简单。

char 通常是 ASCII 中的单个字符。 例如 a,b,c 等。

另一方面,字符串通常是一个接一个的集合或系列。 例如“你好”、“你好兄弟”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM