繁体   English   中英

为什么在使用cout / cin时C ++代码中的错误?

[英]Why the error in the c++ code while use cout/cin?

我有以下代码:

#include<iostream>

int main() {
 char* name;
 std::cout<<"Ingresa tu nombre: \t";
 std::cin>>name;
 std::cout<<"Tu nombre es: \t"<<name;
 return 0;
}

当变量名称的类型为int ,它可以正常工作,但是当变量的类型为char ,要存储整个名称,在输入变量时,程序会说它已经停止工作,甚至无法显示该名称,在最后的cout

在此处输入图片说明

您正在将输入读入未初始化的字符缓冲区指针,基本上是将输入转储到一些随机的内存块中,因此这是未定义的行为,它将崩溃。

您需要在使用之前初始化该缓冲区,或者,这里的C ++解决方案是使用字符串:

std::string name;

这将自动为您处理内存管理,并且不会遭受C固有的缓冲区溢出问题。

char* name; 是一个指针。 它需要指向一些内存。 当前它尚未初始化,因此它可以指向任何地方或任何地方。 这意味着当您这样做时; std::cin>>name; 它会像写入缓冲区一样随机写入程序空间。 这是未定义的行为,可能会导致任何后果,包括在您的情况下正常工作或崩溃。 在c ++中,您可以使用std::string读入:

std::string name;
std::cin>>name;

暂无
暂无

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

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