私は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. 入力時に入力を読み取るにはどうすればよいですか? - Python
- 2. PowerShellで事前定義されたパスを使用せずにファイル入力を読み取るにはどうすればよいですか?
- 3. Rustでブロックせずに子プロセスの出力を読み取るにはどうすればよいですか?
- 4. ファイルからの入力を正しく読み取るにはどうすればよいですか?
- 5. 反応のテキスト領域から入力を読み取るにはどうすればよいですか?
- 6. Javaでファイルから行ごとに入力を読み取るにはどうすればよいですか?</p> <p>ファイルから行ごとにJavaで入力を読み取るにはどうしたらよいですか?
- 7. テキストヘッダを含むソケット入力ストリームからバイナリファイルを読み取るにはどうすればいいですか?
- 8. ノードで2つの入力を次々に読み取るにはどうすればよいですか?
- 9. matlabで書式設定された入力を読み取る
- 10. googleVisで「フォーマットされた値」を設定するにはどうすればよいですか?
- 11. ランタイムパラメータで設定されたGuiceからシングルトンを取得するにはどうすればよいですか?
- 12. ストリーミングシステムから最初に読み込むカスタムプロパティを設定するにはどうすればよいですか?
- 13. MongoDBに読み取りロックを設定するにはどうすればよいですか?
- 14. アプリケーションスコープの設定を読み取り専用にするにはどうすればよいですか?
- 15. Angularjs/ASP.NET:コントローラから返されたjsonを読み込み、それを変数に設定するにはどうすればよいですか?
- 16. プロパティファイルを読み込むようにLog4jを設定するにはどうすればよいですか?
- 17. RingoJSでセッションデータを設定および読み取るにはどうすればよいですか?
- 18. Tensorflowで可変長の1D入力を読み取るにはどうすればよいですか?
- 19. Javaで書式付き入力を読み取るにはどうすればよいですか?
- 20. Winformでキーボード入力を読み取るにはどうすればよいですか?
- 21. 入力データをフォームで読み取るにはどうすればよいですか?
- 22. 実行時に-javaagentで渡された値を読み取るにはどうすればよいですか?
- 23. テキスト入力に添付された提案を取得するにはどうすればよいですか?
- 24. 複数のデータストリームから読み取るプログラムを設計するにはどうすればよいですか?
- 25. エリクサーでの読み書きのために適切にフォーマットされた生のテキストを出力するにはどうすればよいですか?
- 26. podfileで定義された変数を読み取るにはどうすればいいですか
- 27. Javaでは、入力リーダーがプリントライターから正しいデータを読み取るようにするにはどうすればよいですか?
- 28. 文字列入力の最初の文字を読み取るにはどうすればよいですか?
- 29. メモリにロードされたモジュールのPEヘッダを読み取るにはどうすればよいですか?
- 30. 実行中にスペースを読み取れるようにするにはどうすればよいですか?
はい、私は基本的に、書式付きの読み込み(>>を使用)と同じものを設定することができますが、呼び出された後はどうしますか?文字列とそれに続く20個の改行を含むファイル文字列を読み込んだ後にEOFフラグをセットするでしょうか? –
改行も文字です。私はあなたに答えを与えたと思う。私は内容 「文字列 」でファイルを持っていると私は 文字列TakenInをすれば – dirkgently
いいえ、参照してください。 FileWithNewlines >> TakenIn; FilewithNewlines.eof(); //これはtrueを返します –