2009-10-04 6 views
0

Mon code doit identifier les caractères espaces en utilisant cin, donc quand j'utilise l'espace comme entrée, il doit identifier l'espace. Comment puis-je faire cela?Identification des espaces blancs en C++

+2

Que voulez-vous dire que vous devez les identifier? Qu'est-ce que tu attends exactement? –

Répondre

3
string str; 
getline(cin, str); // get the whole line 

Si vous voulez traiter c-strings, vous pouvez utiliser le dessus cin.getline(....) qui est différent des chaînes getline.

3

Cin casse sur les espaces, de toute nature. Si vous avez besoin de lire une ligne complète, vous devez utiliser la fonction de ligne get:

getline(cin, line); 

Où ligne est un std :: string. Cela coupera toujours toutes les nouvelles lignes ou retours de chariot.

Pour tester la chaîne d'espaces, examinez chaque caractère de la chaîne et comparez-le au caractère espace "". Il ne reste comme un exercice pour le lecteur;)

+1

Pas 100% correct. Vous pouvez obtenir que les opérateurs de flux n'ignorent pas l'espace avec std :: noskipws. Mais std :: getline() est la solution la plus facile à utiliser. –

7

Vous pouvez utiliser std::noskipws pour désactiver les espaces blancs que sauter std::cin fait par défaut:

#include <iostream> 
#include <iomanip> 

int main() { 
    char c; 
    std::cin >> std::noskipws; 
    while (std::cin >> c) { 
    if (c == ' ') 
     std::cout << "A space!" << std::endl; 
    } 
    return 0; 
} 
+1

Il y a plus de caractères qui sont __ "Espace blanc" __ –

+0

Je ne pouvais pas être plus d'accord avec Martin. Pourquoi ne pas utiliser 'std :: isspace()' à la place? – sbi

+0

La question mentionne "espace" ainsi que "espace" et n'est pas très clair sur les détails de ce qui doit être fait avec. Seul l'OP sait exactement ce qu'il veut faire à l'intérieur de la boucle, le point principal que je voulais faire était que vous pouvez désactiver le saut d'espace avec 'noskipws'. Ce que vous en faites ensuite dépend du problème spécifique que vous essayez de résoudre. – sth

Questions connexes