簡體   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