[英]What is the difference between char a[] = ?string?; and char *p = ?string?;?
[英]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 之类的东西,其中string
是char*
的 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 字符串一起使用。
这很简单。
char 通常是 ASCII 中的单个字符。 例如 a,b,c 等。
另一方面,字符串通常是一个接一个的集合或系列。 例如“你好”、“你好兄弟”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.