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
}