私はistream :: get()を使用して文字でファイルを読み込みます。この関数を何らかの方法で終了して、ファイルに書式設定された読み込み(空白のみなど)が残っていないかどうかを確認し、対応するフラグ(EOF、不良など)を設定する方法を教えてください。フォーマットされた入力を読み取らずにistreamにEOFを設定するにはどうすればよいですか?
答えて
ストリームから任意の量の先頭(または末尾のまま)の空白をいつでも取り除くことができます。これはstd::ws
に読んでください。たとえば、私たちはSTDINからファイルを読んでいたならば、私たちはどうなる:この質問の他のバージョンにthis commentへ
std::cin >> std::ws
クレジット、4年後に尋ねました。
この関数を、ファイルに書式設定された読み込みに何も残らないようにするために、何らかの方法で終了するにはどうすればよいですか?
空白文字はストリーム内の文字です。ストリームがあなたのためにインテリジェントな処理を行うと想定することはできません。あなた自身のフィルタリングストリームを書くまで、そして、そうでない限り。
ストリームにを作成します。そのskipws
フォーマットフラグがセットされ、コンストラクタは第二引数(noskipws)、すべての主要な空白文字(ロケールとしてtrue
が渡されていない場合は
:これはa few side effects、我々はビーイング気に1を持っています特異的)を抽出して廃棄する。この操作は、文字のソースを排気する場合、関数の両方
failbit
とeofbit
内部状態フラグデフォルト
設定し、フォーマットされた抽出操作(operator>>()
のオーバーロード)の全てが抽出前空白スキップitem - このアプローチで道を切り開いてもよろしいですか?
yesの場合、あなたはおそらくistream
から、新しいクラス、my_istream
を導出し、最後に次のメソッドを呼び出すために、各operator>>()
をオーバーライドすることで、あなたが望むものを達成できる:
void skip_whitespace() {
char ch;
ios_base old_flags = flags(ios_base::skipws);
*this >> ch; // Skips over whitespace to read a character
flags(old_flags);
if (*this) { // I.e. not at end of file and no errors occurred
unget();
}
}
それはかなりです仕事の。ここではいくつかの詳細を省略しています(より一般的な解決策はクラステンプレートbasic_istream<CharT, Traits>
をオーバーライドすることです)。
istreamは多くの助けにはならないでしょう - それは設計どおりに機能します。しかし、実際の読み込みをstreambufsに委譲します。あなたのstreambufラッパーが末尾の空白をトリムした場合、そのstreambufから読み込んだistreamは気付かないでしょう。
- 1. Rustでブロックせずに子プロセスの出力を読み取るにはどうすればよいですか?
- 2. ファイルからの入力を正しく読み取るにはどうすればよいですか?
- 3. Javaでファイルから行ごとに入力を読み取るにはどうすればよいですか?</p> <p>ファイルから行ごとにJavaで入力を読み取るにはどうしたらよいですか?
- 4. matlabで書式設定された入力を読み取る
- 5. テキストヘッダを含むソケット入力ストリームからバイナリファイルを読み取るにはどうすればいいですか?
- 6. googleVisで「フォーマットされた値」を設定するにはどうすればよいですか?
- 7. アプリケーションスコープの設定を読み取り専用にするにはどうすればよいですか?
- 8. Javaで書式付き入力を読み取るにはどうすればよいですか?
- 9. Winformでキーボード入力を読み取るにはどうすればよいですか?
- 10. プロパティファイルを読み込むようにLog4jを設定するにはどうすればよいですか?
- 11. RingoJSでセッションデータを設定および読み取るにはどうすればよいですか?
- 12. 複数のデータストリームから読み取るプログラムを設計するにはどうすればよいですか?
- 13. メモリにロードされたモジュールのPEヘッダを読み取るにはどうすればよいですか?
- 14. Androidでユーザー入力を読むにはどうすればよいですか?
- 15. ユーザー入力から検索条件を設定するにはどうすればよいですか?
- 16. 標準入力からsedを読み込むにはどうすればよいですか?
- 17. og:imageをページから取得するように設定するにはどうすればよいですか?
- 18. Javascriptで生成されたDOMをプログラムで読み取るにはどうすればよいですか?
- 19. javascriptでJSESSIONIDを読み取るにはどうすればよいですか?
- 20. Tkinter:エラーを起こさずに入力フィールドを削除するにはどうすればよいですか?
- 21. 入力ポートからラケットeof-objectを読み取る
- 22. スタティックIPを購入せずに自宅からホストされたウェブサイトを設定するにはどうすればよいですか?
- 23. デフォルト値を設定せずにメタデータオプションを設定するにはどうすればよいですか?
- 24. casper.logの出力をフォーマットするにはどうすればよいですか?
- 25. Pythonでファイル全体を読み取らずに、ファイルの4つの特定の行を読み込むにはどうすればよいですか?
- 26. Zookeeperトランザクションログを読み取るにはどうすればよいですか?
- 27. ページを再読み込みせずにセッションを維持するにはどうすればよいですか?
- 28. AndroidでEditTextに複数の入力タイプを設定するにはどうすればよいですか?
- 29. istreamからの書式付き入力の読み取り
- 30. Silverlight RichTextBoxで書式設定されたテキストを設定するにはどうすればよいですか?
はい、私は基本的に、書式付きの読み込み(>>を使用)と同じものを設定することができますが、呼び出された後はどうしますか?文字列とそれに続く20個の改行を含むファイル文字列を読み込んだ後にEOFフラグをセットするでしょうか? –
改行も文字です。私はあなたに答えを与えたと思う。私は内容 「文字列 」でファイルを持っていると私は 文字列TakenInをすれば – dirkgently
いいえ、参照してください。 FileWithNewlines >> TakenIn; FilewithNewlines.eof(); //これはtrueを返します –