#include <string>
std::string input;
std::cin >> input;
L'utilisateur veut entrer "Hello World". Mais cin
ne parvient pas à l'espace entre les deux mots. Comment faire en sorte que cin
prenne tout le contenu de Hello World
?
En fait, je le fais avec structs et cin.getline
ne semble pas fonctionner. Voici mon code:
struct cd
{
std::string CDTitle[50];
std::string Artist[50];
int number_of_songs[50];
};
std::cin.getline(library.number_of_songs[libNumber], 250);
Cela génère une erreur. Des idées?
Vous devez utiliser cin.getline()
:
char input[100];
cin.getline(input,sizeof(input));
Cela ne "échoue" pas; ça arrête juste de lire. Il voit un jeton lexical comme une "chaîne".
Utilisez 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;
}
_
Notez que ceci est pas identique à _std::istream::getline
_, qui fonctionne avec les tampons de style C char
plutôt que _std::string
_ s.
Mettre à jour
Votre question modifiée a peu de ressemblance avec l'original.
Vous essayiez de getline
dans un int
, pas une chaîne ni un tampon de caractères. Les opérations de formatage des flux ne fonctionnent qu'avec _operator<<
_ et _operator>>
_. Utilisez l’un d’eux (et ajustez-le en conséquence pour une saisie de plusieurs mots) ou utilisez getline
et convertissez-lexicalement en int
après coup.
Utilisation :
getline(cin, input);
la fonction peut être trouvée dans
#include <string>
La bibliothèque standard fournit une fonction d'entrée appelée ws
, qui consomme des espaces à partir d'un flux d'entrée. Vous pouvez l'utiliser comme ceci:
std::string s;
std::getline(std::cin >> std::ws, s);
Vous voulez utiliser la fonction .getline dans 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;
}
Pris l'exemple de ici . Découvrez-le pour plus d'informations et d'exemples.
THE C WAY
Vous pouvez utiliser la fonction gets
trouvée dans cstdio (stdio.h en c):
#include<cstdio>
int main(){
char name[256];
gets(name); // for input
puts(name);// for printing
}
C++
gets
est supprimé de c ++ 11.
[Recommandé]: vous pouvez utiliser getline (cin, nom) qui est dans string.h
ou cin.getline (nom, 256) qui est dans iostream
lui-même.
#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
}