Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GenR_18 en 21 Septiembre 2013, 02:05 am



Título: Problema con string, char, etc
Publicado por: GenR_18 en 21 Septiembre 2013, 02:05 am
Pff de seguro es una tonteria, pero esta tonteria me ha llevado buen rato quebrandome la cabeza  :silbar:

Lo que quiero hacer es recibir valores tipo cadena y mostrarlos completos, es decir:

Código:
#include <iostream>

using namespace std;

int main(){

     char nombre[50];
     cout << "Nombre(s):" << endl;
     cin >> nombre;
     cout << nombre << endl;

     return 0;
}


Que si yo ingreso algo como "Nombre Apellido" (notese el espacio), no sólo me muestre "Nombre" (como lo hace), sino que me guarde toda la frase que el usuario ingrese, lo he probado de varias formas, tratando de ver cuál me funciona, pero nada.

Código:
#include <iostream>
#include <string> // o string.h

using namespace std;

int main(){

     string nombre;
     cout << "Nombre(s):" << endl;
     cin >> nombre;
     cout << nombre << endl;

     return 0;
}

Código:
#include <iostream>
#include <string.h>

using namespace std;

int main(){

     char *nombre;
     cout << "Nombre(s):" << endl;
     cin >> nombre;
     cout << nombre << endl;

     return 0;
}

Como se habrán dado cuenta, ya no sé ni qué estoy haciendo :xD . Con el estrés de la semana y el poco tiempo que he tenido para investigar, pues he decidido pedirles ayuda.

Soy relativamente nuevo en C/C++, vengo de la onda web (PHP, javascript) y Python, en donde esto es 1000 veces más simple  :¬¬

PD: El punto es realizarlo en C++.

Gracias por su ayuda ;D

Salu2


Título: Re: Problema con string, char, etc
Publicado por: rir3760 en 21 Septiembre 2013, 02:51 am
El problema se debe al uso del operador ">>", cuando su operando es de tipo "char *" este lee (y almacena en la dirección indicada) una palabra. La solución es utilizar la función std::istream::getline (http://www.cplusplus.com/reference/istream/istream/getline/), una opción mejor es utilizar la clase string y la función std::getline (http://www.cplusplus.com/reference/string/string/getline/).

Un saludo


Título: Re: Problema con string, char, etc
Publicado por: GenR_18 en 21 Septiembre 2013, 19:30 pm
El problema se debe al uso del operador ">>", cuando su operando es de tipo "char *" este lee (y almacena en la dirección indicada) una palabra. La solución es utilizar la función std::istream::getline (http://www.cplusplus.com/reference/istream/istream/getline/), una opción mejor es utilizar la clase string y la función std::getline (http://www.cplusplus.com/reference/string/string/getline/).

Un saludo

Gracias por la ayuda, solucionado  ;D

Salu2