Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no puedo almacenar string con espacios

Estas en el tema de no puedo almacenar string con espacios en el foro de C/C++ en Foros del Web. Hola a todos, Estoy tratando de ingresar una cadena completa con espacios entre medio ejemplo: hola a todos lo que guarda es solo el hola ...
  #1 (permalink)  
Antiguo 25/04/2013, 14:35
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 14 años, 3 meses
Puntos: 9
no puedo almacenar string con espacios

Hola a todos,
Estoy tratando de ingresar una cadena completa con espacios entre medio
ejemplo: hola a todos

lo que guarda es solo el hola y nada mas.

aqui pongo el codigo, esta separado por archivos, tambien puede servir de ayuda para algunos que no les funcione el codigo con herencia y archivos de cabezera.

// main.cpp

Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. #include "Profesor.h"
  6.  
  7. int main() {
  8.    int opcion;
  9.    int numeroI;
  10.    int edad;
  11.    char nom[30];
  12.    char cla[30];    
  13.    vector<Profesor> ListaP;  
  14.    
  15.    
  16.    for(int i=0; i<2; i++){  
  17.          Profesor np;  
  18.          cout<<endl;  
  19.          cout<<"Numero : ";
  20.          cin>>numeroI;
  21.          np.setInscripcion(numeroI);
  22.          cout<<endl;
  23.          
  24.          cout<<"Edad : ";
  25.          cin>>edad;
  26.          np.setEdad(edad);
  27.          cout<<endl;        
  28.          
  29.          cout<<"Nombre : ";
  30.          cin>>nom;
  31.          np.setNombre(nom);
  32.          cout<<endl;
  33.          
  34.          cout<<"Clase : ";
  35.          cin>>cla;
  36.          np.setClase(cla);
  37.          cout<<endl;
  38.          
  39.          ListaP.push_back(np);
  40.    }
  41.    
  42.    for(int i=0; i<ListaP.size(); i++){        
  43.          cout<<ListaP[i].getInscripcion()<<" : "<<ListaP[i].getEdad()<<" : "<<ListaP[i].getNombre()<<" : "<<ListaP[i].getClase()<<endl;
  44.    }
  45.  
  46.    
  47.  
  48.    cout<<endl;  
  49.    system("PAUSE");
  50.    return 0;
  51. }


// Persona.cpp

Código C++:
Ver original
  1. #include "Persona.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. Persona::Persona(){}
  6. Persona::~Persona(){}
  7.  
  8. void Persona::setInscripcion(int num){
  9.     this->numeroInscripcion=num;
  10. }
  11.            
  12. int Persona::getInscripcion(){
  13.     return this->numeroInscripcion;      
  14. }
  15.  
  16. // Nombre de la persona
  17.  
  18. void Persona::setNombre(char const *nom){
  19.      //no lo acepta c++
  20.      //this->nombre=nom;    
  21.      strcpy(this->nombre, nom);  
  22.      //cout<<this->nombre<<" Lo Copia "<<endl;
  23. }
  24.  
  25. char * Persona::getNombre(){    
  26.      return this->nombre;
  27. }
  28.  
  29. // Edad de la persona
  30.  
  31. void Persona::setEdad(int edad){
  32.      this->edad=edad;          
  33. }
  34.  
  35. int Persona::getEdad(){
  36.     return this->edad;    
  37. }


// Persona.h

Código C++:
Ver original
  1. #ifndef PERSONA
  2. #define PERSONA
  3.  
  4. class Persona{
  5.       private:
  6.               int numeroInscripcion;              
  7.               char nombre[30];
  8.               int edad;
  9.                    
  10.       public:
  11.              Persona();
  12.              ~Persona();
  13.              void setInscripcion(int num);            
  14.              void setNombre(char const *nom);
  15.              void setEdad(int edad);
  16.              
  17.              int getInscripcion();
  18.              char * getNombre();
  19.              int getEdad();
  20.              
  21.                    
  22.  
  23. };
  24.  
  25. #endif

// Profesor.cpp

Código C++:
Ver original
  1. #include <iostream>
  2. #include "Profesor.h"
  3.  
  4. using namespace std;
  5.  
  6. Profesor::Profesor(){}
  7. Profesor::~Profesor(){}
  8.  
  9. void Profesor::setClase(char const *clase){
  10.      //this->clase=clase;    
  11.      strcpy(this->clase, clase);
  12. }
  13.  
  14. char * Profesor::getClase(){
  15.     return this->clase;    
  16. }

// Profesor.h

Código C++:
Ver original
  1. #ifndef PROFESOR
  2. #define PROFESOR
  3.  
  4. #include "Persona.h"
  5.  
  6. class Profesor : public Persona {
  7.     private:
  8.             char clase[30];
  9.            
  10.     public:
  11.            Profesor();
  12.            ~Profesor();
  13.            void setClase(char const *clase);          
  14.            char * getClase();
  15.        
  16. };
  17.  
  18. #endif
  #2 (permalink)  
Antiguo 26/04/2013, 03:57
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: no puedo almacenar string con espacios

Cin lee hasta un salto de línea o un espacio.

Para leer líneas enteras usa getline(cin, cadena)

Por cierto en vez de array de char, yo usaría strings. Son más fáciles y más operativos.

Etiquetas: almacenar, espacios, funcion, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:47.