2010-09-24 4 views
0

ma question est un peu étrange, mais comment est-il possible de lire une chaîne de caractères à partir du clavier omble chevalier par char sans utiliser scanf() et getchar() seulement en utilisant operator<<, par exemple, je veux changer chaque lettre a que je lire par * merci d'avancelecture omble chevalier par char

Répondre

2
char c; 
std::string output; 


while(std::cin >> c) 
{ 
    if(c == 'a') 
     c = '*'; 

    output += c; 

} 
+0

La méthode 'push_back()' peut être remplacée par une concaténation: 'output + = c;'. Cela peut être plus naturel car c'est un append. –

+0

Bon appel. Je suis resté coincé en terre C trop longtemps. –

0

Essayez d'écrire sur un type de caractère.

char cReadFromStream; 

stream >> cReadFromStream; 
0

Vous ne pouvez pas. operator << uses cooked inputs.

Cependant, si vous avez vraiment voulu dire que vous êtes à la recherche d'une solution en utilisant C++ iostreams et non des fonctions C stdio, utilisez cin.get() qui est le C++ iostreams équivalent à getchar.

1

Selon vos besoins, vous pouvez le trouver approprié de le faire:

#include <iostream> 
#include <iomanip> 

char c; 

std::cin >> std::noskipws; 

while (std::cin >> c) 
    std::cout << c == 'a' ? '*' : c; 

Voir http://www.cplusplus.com/reference/iostream/manipulators/noskipws/ pour plus de détails noskipws, ce qui est essentiel sinon l'opérateur >> permet de sauter des espaces, des onglets et des sauts de ligne jusqu'à ce que il trouve d'autres caractères à mettre en 'c', ce qui entraîne la suppression de tous les caractères d'espaces blancs mentionnés ci-dessus.

Questions connexes