Comment imprimer un istream entier à la sortie standard et la chaîne
Comment imprimer un istream variable standard.
[EDIT] je suis en train de déboguer un scénario dans lequel j'ai besoin de la sortie d'un istream dans un fichier journal
source d'informationauteur kal
Vous devez vous connecter pour publier un commentaire.
Vous pour la sortie de la istream est streambuf.
Par exemple, à la sortie d'un ifstream pour cout:
Edit: je suis en supposant que vous souhaitez copier l'intégralité du contenu du flux, et pas seulement une seule valeur. Si vous voulez lire un seul mot, vérifier des années 1800, la réponse à la place.
La solution évidente est d'un tout-boucle de la copie d'un mot à un moment, mais vous pouvez faire plus simple, comme une belle oneliner:
La stream_iterators utiliser l'opérateur << et >> en interne, ce qui signifie qu'ils ignorent les espaces. Si vous voulez une copie exacte, vous pouvez utiliser std::istreambuf_iterator et std::ostreambuf_iterator à la place. Ils travaillent sur le sous-jacent (non formaté) flux de tampons de sorte qu'ils ne sautez pas d'espaces ou de convertir les sauts de ligne ou quoi que ce soit.
Vous pouvez également utiliser:
pour prévenir les espaces de disparaître. Notez cependant que, si votre flux de données est un fichier binaire, certains autres caractères peuvent être assommé par le
>>
et<<
opérateurs.Cela permettra d'imprimer l'ensemble des flux, de 1 caractère à la fois:
Cela permettra d'imprimer le tout, mais jetez un espace:
Vous avez besoin de lire, puis de sortie ce que vous lisez:
std::ifsream les surcharges et les std::ostringstream
c++11 ou supérieur
Attention à
&&
dans std::ifstream qui vous permettent de vous diriger à l'aide dede sortie: