標準出力にistream変数をどのように出力しますか? [EDIT]私は、ログファイルにはistreamをouputをする必要が前記私はシナリオをデバッグしようとしていますistream全体を標準出力と文字列に出力する方法
答えて
これは、一度に1つの文字、全体ストリームを出力します:
char c;
c = my_istream.get();
while (my_istream)
{
std::cout << c;
c = my_istream.get();
}
これを印刷します
std::string output;
while(my_istream >> output)
std::cout << output;
編集:私はあなたがストリームの内容全体をコピーしたいと仮定し、いないよがちょうど単一の値全部が、空白を捨てます。 1つの単語だけを読みたい場合は、代わりに1800の答えを確認してください。
明白な解決策は、一度に単語をコピーするwhileループですが、あなたはそれに素敵な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));
stream_iteratorsは、オペレータ< <を使用して>>内部的には、空白を無視することを意味します。正確なコピーが必要な場合は、代わりにstd :: istreambuf_iteratorとstd :: ostreambuf_iteratorを使用できます。それらは基礎となる(フォーマットされていない)ストリームバッファで動作し、空白をスキップしたり、改行や何かを変換したりしません。
また、使用することができます:
i >> std::noskipws;
が消えてから空白を防ぐために。ただし、ストリームがバイナリファイルの場合は、>>
と<<
演算子によって他の文字が詰まる可能性があります。
あなたが読んだものを出力、それから読み取る必要があり、かつ:
istream stm;
string str;
stm >> str;
cout << str;
は、1つの単語(空白で区切られた)だけを読み込みます。私は彼がストリームからすべてをコピーしたいと思う。 – jalf
私は彼がそれを望むなら、彼はそれを言っただろうと思う –
彼は何を望んでいるのか、質問は貧しいです。 –
あなたがたIStreamのストリームバッファを出力リレー。
例えば、出力するcoutにはifstream:
std::ifstream f("whatever");
std::cout << f.rdbuf();
のstd :: ifsreamの過負荷とstd :: ostringstream
C++ 11または上
ご注意ください&&
in std :: ifstreamあなたが使用できるようにする
#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
}
出力:
Test ostringstream overloading Test fstream overloading Process returned 0 (0x0) execution time : 0.012 s Press ENTER to continue.
- 1. inkscapeのエクスポートファイルを標準出力に出力する方法と標準入力から読み取る方法
- 2. 標準出力方法
- 3. スウィフトで\ 0を標準出力に出力する方法
- 4. golangに文字列に標準出力からの出力を取得する方法
- 5. ファイルテールインバウンド・チャネル・アダプターを標準エラー出力と標準出力
- 6. 出力を標準エラー出力にリダイレクト
- 7. 標準出力バッファの監視と文字列へのリダイレクトC++
- 8. 標準出力をプロセス(msxsl.exe)からVB.NETの文字列にリダイレクト
- 9. 標準入力と標準出力を.Netでリダイレクトする
- 10. 標準入力と出力をBashでリダイレクトする方法
- 11. 標準出力と標準エラー出力をUnixリダイレクトを使ってローリングファイルにリダイレクトする方法
- 12. 標準入力と出力を
- 13. 標準出力、標準入出力オプション[ヌルヌル、ヌル、]「継承」
- 14. のpythonロギングモジュール - ターミナル、標準出力、標準エラー出力
- 15. SQLのdefind文字列出力から非標準文字を取り除く
- 16. pythonの標準出力にpostgresqlテーブルを出力する
- 17. バイナリツリーを標準出力に出力するJava
- 18. Pythonロギング:標準出力への出力を無効にする
- 19. は、出力を標準出力に出力してキャプチャする方法もありますか?
- 20. C++は - コンソール出力を維持しながらファイルに標準出力/標準エラー出力を複製
- 21. 安全な文字列出力
- 22. ジップファイルと標準出力にプリント
- 23. Linux(GCC)で出力する(標準出力ではない)方法は?
- 24. Pythonの:標準出力
- 25. バッファリング標準出力(STDOUT)
- 26. ctypesで標準出力リダイレクト
- 27. NodeJSの標準出力フラッシュ?
- 28. PHPライブラリ/標準出力
- 29. Subprocess.communicateは改行を標準出力に出力します
- 30. 親の標準入力と標準出力を継承するリモートプロセスを.NETで呼び出すには
それはあなたがやろうとしているが何であるかを明確にしてください。 –
文字列全体を印刷したい – kal