poner nombre leer ingresar hasta frases espaƱol espacios espacio escribir con cadenas c++ string space

c++ - nombre - std:: cin entrada con espacios?



poner espacios c++ (7)

Desea utilizar la función .getline en cin.

#include <iostream> using namespace std; int main () { char name[256], title[256]; cout << "Enter your name: "; cin.getline (name,256); cout << "Enter your favourite movie: "; cin.getline (title,256); cout << name << "''s favourite movie is " << title; return 0; }

Tomó el ejemplo de here . Compruébelo para obtener más información y ejemplos.

#include <string> string input; cin >> input;

El usuario quiere ingresar a "Hola mundo". Pero cin falla en el espacio entre las dos palabras. ¿Cómo puedo hacer cin en todo Hello World ?

De hecho, estoy haciendo esto con structs y cin.getline no parece funcionar. Aquí está mi código:

struct cd { string CDTitle[50]; string Artist[50]; int number_of_songs[50]; }; cin.getline(library.number_of_songs[libNumber], 250);

Esto produce un error. ¿Algunas ideas?


Esta es una vieja pregunta, pero ¿alguien me puede decir si mi solución es incorrecta?

std::string s, temp; std::stringstream ss; while(std::cin>>temp){ ss<<temp; ss<<" "; } s = ss.str();


La biblioteca estándar proporciona una función de entrada llamada ws , que consume espacios en blanco de una secuencia de entrada. Puedes usarlo así:

std::string s; std::getline(std::cin >> std::ws, s);


No "falla"; simplemente deja de leer. Ve un token léxico como una "cadena".

Use std::getline :

int main() { std::string name, title; std::cout << "Enter your name: "; std::getline(std::cin, name); std::cout << "Enter your favourite movie: "; std::getline(std::cin, title); std::cout << name << "''s favourite movie is " << title; }

Tenga en cuenta que esto no es lo mismo que std::istream::getline , que funciona con búferes de caracteres C en lugar de std::string s.

Actualizar

Su pregunta editada tiene poco parecido con el original.

Intentabas poner la línea en un int , no en un buffer de cadena o caracteres. Las operaciones de formateo de flujos solo funcionan con el operator<< y el operator>> . Utilice uno de ellos (y modifique según corresponda para la entrada de varias palabras), o use getline y léxicamente convierta a int después de los hechos.


Tienes que usar cin.getline() :

char input[100]; cin.getline(input,sizeof(input));


Utilizar :

getline(cin, input);

la función se puede encontrar en

#include <string>


EL CAMINO C

Puede usar la función gets encontrada en cstdio (stdio.h en c):

#include<cstdio> int main(){ char name[256]; gets(name); // for input puts(name);// for printing }

EL CAMINO C ++

gets se elimina en c ++ 11.

[Recomendado]: puede usar getline(cin,name) que está en string.h o cin.getline(name,256) que está en iostream .

#include<iostream> #include<string> using namespace std; int main(){ char name1[256]; string name2; cin.getline(name1,256); // for input getline(cin,name2); // for input cout<<name1<<"/n"<<name2;// for printing }