Comment imprimer une variable istream en sortie standard. [EDIT] Je suis en train de déboguer un scénario où je dois ouput un istream dans un fichier journalComment imprimer un istream entier en sortie standard et une chaîne
Répondre
Ce imprimera tout le flux, 1 caractère à la fois:
char c;
c = my_istream.get();
while (my_istream)
{
std::cout << c;
c = my_istream.get();
}
Ce imprimera la tout, mais jeter les espaces:
std::string output;
while(my_istream >> output)
std::cout << output;
Edit: Je suppose que vous voulez copier tout le contenu du flux, et non pas seulement une seule valeur. Si vous voulez seulement lire un seul mot, vérifiez la réponse de 1800 à la place.
La solution évidente est une boucle while copie d'un mot à la fois, mais vous pouvez le faire plus simple, comme une belle oneliner:
#include <iostream>
#include <iterator>
...
std::istream i;
std::copy(std::istream_iterator<char>(i), std::istream_iterator<char>(), std::ostream_iterator<char>(std::cout));
Les stream_iterators utilisent l'opérateur < < et >> en interne, ce qui signifie qu'ils vont ignorer les espaces. Si vous voulez une copie exacte, vous pouvez utiliser std :: istreambuf_iterator et std :: ostreambuf_iterator à la place. Ils travaillent sur les tampons de flux sous-jacents (non formatés) afin qu'ils n'oublient pas les espaces ou ne convertissent pas les lignes de nouvelle ligne ou quoi que ce soit.
Vous pouvez également utiliser:
i >> std::noskipws;
pour éviter les espaces de disparaître. Notez cependant que si votre flux est un fichier binaire, d'autres caractères peuvent être modifiés par les opérateurs >>
et <<
.
Vous devez lire, puis sortie ce que vous lisez:
istream stm;
string str;
stm >> str;
cout << str;
qui lit seulement un mot (espace délimité). Je pense qu'il veut tout copier du flux. – jalf
Je pense que s'il le voulait, il l'aurait dit –
Qui sait ce qu'il veut, la question est mauvaise. –
Vous Ouput le streambuf du istream.
Par exemple, pour une sortie à ifstream Cout:
std::ifstream f("whatever");
std::cout << f.rdbuf();
std :: surcharge ifsream et std :: ostringstream
C++ 11 ou supérieur
Faites attention à &&
en std :: ifstream qui vous permet de diriger en utilisant
#include <iostream>
#include <sstream>
#include <fstream>
std::ostream& operator<<(std::ostream& os, std::basic_ostringstream&& iss){
return os<<iss.str();
}
std::ostream& operator<<(std::ostream& os, std::ifstream&& ifs){
return std::cout<<ifs.rdbuf();
}
int main()
{
std::cout<<std::ostringstream("Test ostringstream overloading")<<std::endl;
std::ofstream("fstream.txt")<<"Test fstream overloading"<<std::endl;
std::cout<<std::ifstream("fstream.txt")<<std::endl; // overloading okay
}
sortie:
Test ostringstream overloading Test fstream overloading Process returned 0 (0x0) execution time : 0.012 s Press ENTER to continue.
- 1. Entrée et sortie standard en c
- 2. Mise en forme entier pour la sortie de chaîne
- 3. Comment imprimer une sortie avec python?
- 4. Exécuter un processus et renvoyer sa sortie standard dans VC++
- 5. Convertir une chaîne en entier avec décimal en Python
- 6. C Programmation. Comment faire une méthode pour imprimer une chaîne
- 7. Conversion d'un nombre entier en une chaîne hexadécimale dans Ruby
- 8. Java IO entréestream bloque en lisant la sortie standard et l'erreur standard d'un programme externe C
- 9. Manière optimale d'obtenir une chaîne ou un char * dans un flux istream?
- 10. SQL Server Convertir un entier en chaîne binaire
- 11. Convertir une chaîne en entier dans XSLT 1.0
- 12. concaténer/imprimer un littéral de chaîne
- 13. convertir la chaîne de caractères hexadécimale en entier en Java
- 14. C (gcc sur linux): Comment convertir une chaîne hexadécimale "0xfffffff" en un entier?
- 15. Opérateur istream
- 16. Comment enregistrer la sortie de l'exécutable en cours d'exécution avec le script bash et l'entrée standard?
- 17. Convertir un paramètre entré en entier en une chaîne dans JasperReports
- 18. Un moyen sûr et valide pour convertir un "entier flottant" en un entier naturel?
- 19. Pad un entier en utilisant une expression régulière
- 20. format entier à la chaîne
- 21. Comment "imprimer" sur un papier en PHP?
- 22. Comment stocker un IStream dans un fichier via C#?
- 23. et sortie sans une bibliothèque en C
- 24. Comment obtenir une représentation chaîne Unicode Standard (ou autre) du format date + heure de l'utilisateur?
- 25. Redirige la sortie standard efficacement dans .NET
- 26. Rediriger la sortie standard vers syslog
- 27. Comment puis-je vérifier si une chaîne contient un nombre inférieur à un nombre entier?
- 28. Imprimer/enregistrer automatiquement la sortie XML NUnit
- 29. Comment imprimer un chèque?
- 30. Comment faire pour passer la sortie standard de bash?
S'il vous plaît préciser ce que vous essayez de faire. –
Je veux imprimer la chaîne entière – kal