[AYUDA] Entrada y Salida en C++

Iniciado por anderson269, 30 Abril 2012, 03:56 AM

0 Miembros y 1 Visitante están viendo este tema.

anderson269

Hola amigos, soy nuevo en esto del C++. Tengo una duda, cuando compilo este código se indroduce el nombre de la persona pero cuando se ejecuta la salida (que deberia de decir Hola "nombre de la persona") sólo aparece la primera letra del nombre.

Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    char nombre;
    cout << "Introduce tu nombre: ";
    cin >> nombre;
    cout << "Hola " << nombre;
    getch();
}

durasno

hola! cuando empieces a ver arreglos vas a poder hacer lo que vos qres

EDIT: tambien tenes la clase string sino me equivoco

Saludos
Ahorrate una pregunta, lee el man

s00rk

char nombre; Quiere decir un caracter por lo que solo guardara el primero que escribas y los demas "se perderan"(ya que veas sobre memoria podras entender a lo que me refiero hehe), por lo que si deceas es imprimir varios caracteres seria:
char nombre[100]; // Asi podrias guardar en nombre hasta 100 caracteres (0 - 99)
o tambien
char *nombre; // guardando un puntero de caracteres.

Bueno ahi ya con eso espero comprendas n_n, saludos y suerte.

STANHMAL

#3
Cita de: anderson269 en 30 Abril 2012, 03:56 AM
Código (cpp) [Seleccionar]

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    char nombre;
    cout << "Introduce tu nombre: ";
    cin >> nombre;
    cout << "Hola " << nombre;
    getch();
}


no uses conio.

para hacer eso, necesitas la biblioteca string, para declarar una variable tipo string:

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string nombre;
    cout << "Introduce tu nombre: ";
    cin >> nombre;
    cin.ignore();
    cout << "Hola " << nombre;
    cin.get();

     return 0;
}


el cin.ignore(); es para que ignore el enter '\n', y no cause problemas después con la lectura de otra cosa.

el cin.get(); toma un carácter, este da una pausa esperando a que le des enter.

$4!u2
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red

theluigy13etv

#4
El problema radica en la forma de tu declaración. Lo que pasa es que char es un tipo que representa a caracteres individuales como 'L', 'a', '5', etc. Si deseas guardar un conjunto de caracteres debes guardarlo en una cadena (arreglo de caracteres). La forma tradicional de hacerlo es:

char nombre[25];

Donde el número especificado entre los corchetes indica que puedes almacenar 24 caracteres. (El caracter faltante es para almacenar el caracter nulo que indica el final de la cadena). El problema de este tipo de declaración está en que debes especificar el número máximo de caracteres a almacenar. Por ejemplo, en la declaración que puse líneas arriba, si es que el nombre contiene más de 24 caracteres, entonces te verías forzosamente a cambiar la declaración tal vez así:

char nombre[50];

Así, podrás almacenar máximo 49 caracteres. Pero, no siempre vamos a saber cuántos caracteres necesitamos almacenar, por lo la mayoría ahora utiliza otro tipo de declaración y no la anterior (la que se usaba antiguamente en C)

La mejor forma, es como lo mencionó STANHMAL, incluyendo en las directivas del preprocesador el archivo de cabecera string:
   
#include <string>

y luego en la declaración, usar la clase string así:

string nombre;

De esta manera, no tienes porqué preocuparte por la cantidad de caracteres de tu cadena, ya que tu variable se va adecuar por sí solo según la longitud de tu cadena. De esta manera se hace un uso más eficiente de la memoria.