1

Quiero hacer que cuando yo esté leyendo mi variable tipo string los espacios que yo inserte en el sean parte de la cadena, y no lo interprete como que voy a insertar el valor de otra variable.

Ejemplo:

string cadena;
int n;
cin>>cadena;
cin>>n;

Al momento de leer cadena e insertar un espacio quiero que ese espacio sea parte del string y el programa no lo interprete como que voy a leer n que es una variable de tipo entero.

DevMind
  • 5,025
  • 11
  • 29
  • 60
Alfrediwis
  • 13
  • 4

1 Answers1

4

Para leer los espacios tienes que usar la función std::getline:

std::getline(std::cin, cadena);

Ahora bien, a la hora de mezclar std::cin y std::getline hay que tener en cuenta un detalle tonto pero importante y es que std::cin no elimina los saltos de línea. Así que entre una llamada a cin y otra a getline es probable que debas usar std::cin.ginore() para eliminar el salto de línea.

int entero1, entero2;
std::string cadena1, cadena2;

std::cin >> entero1;
std::cin >> entero2; // No hace falta llamar a ignore

std::cin.ignore(); // Eliminamos el salto de linea

std::getline(std::cin, cadena1);
std::getline(std::cin, cadena2); // No hace falta llamar a ignore
eferion
  • 49,291
  • 5
  • 30
  • 72
  • Si al principio del programa coloco "using namespace std;" no hace falta ponerlos en todo el programa cierto? – Alfrediwis Mar 10 '19 at 01:24
  • 1
    @Alfrediwis `using namespace` no es una buena práctica. Consulta esta otra [pregunta](https://es.stackoverflow.com/q/460) para saber por qué. – eferion Mar 10 '19 at 08:21