2009-11-14 5 views
1

J'ai une question très simple. Si je tape "Hello World", la sortie que je reçois est seulement "Hello". Je sais que cela a probablement à voir avec les espaces. Donc, ma question est de savoir comment je devrais écrire si je veux aussi les espaces blancs?Question de chaîne C++

J'ai également essayé d'utiliser getline (cin, str); mais il ne lira l'entrée que la première fois et ignorera le reste

Répondre

2

getline(cin, str) devrait fonctionner, mais vous pouvez avoir à purger le tampon d'entrée avant de l'appeler si vous rencontrez « char sauter »:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
std::string str; 
std::getline(std::cin, str); 
+0

merci pour l'aide – starcorn

1

getline (cin, str) est le bon chemin. Que voulez-vous dire qu'il ne lira que la première fois et ignorera le reste?

+0

si j'écris un premier cin avant getline(); par exemple. cin >> var1; getline (cin, var2); il va obtenir une entrée pour var1, mais sautez var2 – starcorn

0

Le problème est, operator >> laisse l'espace suivant/saut de ligne/whatever dans le tampon d'entrée. Donc, si vous appelez cin >> str suivi de getline(cin, str), l'opération getline verra le premier caractère dans le tampon d'entrée est un retour à la ligne, et arrêter.

+0

merci je pense le comprendre plus maintenant – starcorn