C++ 在C++;出现一个错误

C++ 在C++;出现一个错误,c++,C++,首先,看下面的简单代码 int main(){ char *name; cout << "Enter your name: "; cin >> name; cout << "Your name is: " << name; return 0; } 编译代码后,我遇到另一个错误与'operator>>不匹配(操作数类型为'std::istream{aka std::basic_istream}和'const

首先,看下面的简单代码

int main(){
    char *name;
    cout << "Enter your name: ";
    cin >> name;
    cout << "Your name is: " << name;

    return 0;
}
编译代码后,我遇到另一个错误
与'operator>>不匹配(操作数类型为'std::istream{aka std::basic_istream}和'const char*')


上一个错误的原因是什么,以及如何解决?

您尚未初始化任何可以读取字符串的内存
char*
是指向内存中可以读取字符串的位置的指针,但首先必须使用
new
malloc
分配内存

<>但是,在C++中还有一个更好的选择:使用<代码> STD::String < /C> >:

#include <string>

int main()
{
    std::string name;
    cout << "Enter your name: ";
    cin >> name;
    cout << "Your name is: " << name;

    return 0;
}
#包括
int main()
{
std::字符串名;
姓名;

cout您尚未初始化任何可读取字符串的内存。
char*
是指向内存中可读取字符串位置的指针,但必须首先使用
new
malloc
分配内存

<>但是,在C++中还有一个更好的选择:使用<代码> STD::String < /C> >:

#include <string>

int main()
{
    std::string name;
    cout << "Enter your name: ";
    cin >> name;
    cout << "Your name is: " << name;

    return 0;
}
#包括
int main()
{
std::字符串名;
姓名;

cout
char*
没有为字符串分配任何存储空间。您应该使用
std::string name;
。两个版本(有和没有
const
)有部分相同,部分不同的问题。但既然您标记了问题“c++”:为什么不使用std::string来完全避免内存/指针问题?您不会从该代码中得到警告。我猜它实际上类似于
char*name=“something”在任何情况下,您都不能写入字符串常量或未初始化的指针,因此使用
std::string
char*
不会为字符串分配任何存储空间。您应该改用
std::string name;
这两个版本(有和没有
const
)有部分相同,部分不同的问题。但既然您标记了问题“c++”:为什么不使用std::string来完全避免内存/指针问题?您不会从该代码中得到警告。我猜它实际上类似于
char*name=“something”在任何情况下,你都不能写入字符串常量或未初始化的指针,所以请使用
std::string
。我不在乎使用
c
c++
,是否没有办法使用c-string?@Sunrise是的,但你为什么要这样做?@Sunrise:是的,但它更复杂,更容易出错。你为什么要这样做?这只是为了公关练习,但请告诉我如何使用c-string来处理我的代码。如果输入超过1024个字符怎么办?我不关心使用
c
c++
,是不是没有办法使用c-string?@Sunrise是的,但你为什么要这样做?@Sunrise:是的,但它更复杂,更容易出错。你为什么要这样做?这只是为了练习ce,但请告诉我如何在代码中使用c-string。如果输入超过1024个字符怎么办?
int main()
{
    char name[MAX_SIZE];
    cout << "Enter your name: ";
    cin.get(name, MAX_SIZE);
    cout << "Your name is: " << name;

    return 0;
}