問題タブ [istream-iterator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - なぜ istream_iterator は(ifstream("test.txt")) エラーが発生しますか?
「test.txt」という名前のファイルから文字列を読み取り、その文字列を標準出力に書き込むコードを作成しようとしました。以下のコードはうまく機能します。
ただし、この変更により、コードはコンパイルされなくなります。
このバージョンがコンパイルされないのはなぜですか?
使用したコンパイラは g++4.6.2 で、エラーは次のとおりです。
c++ - istream_iterator と文字列を使用してテキストファイルを読み取る
テキストファイルを文字列変数に読み取りたいのですが、以下の手順を実行した後、文字列は空です:
このスニペットの何が問題なのか誰か教えてもらえますか?
c++ - 入力反復子の値の初期化
「Accelerated C++」本の第 8 章を読んでいます。セクション 8.3 は、入力イテレータと出力イテレータに関するものです。
[...]
copy の 2 番目の引数は、どのファイルにもバインドされていないデフォルト (空の) istream_iterator を作成します。istream_iterator 型にはデフォルト値があり、ファイルの終わりに達したか、エラー状態にある istream_iterator はデフォルト値と同じに見えるというプロパティがあります。したがって、デフォルト値を使用して、コピーの「1 つ後」の規則を示すことができます。
これは私が理解していることです: istream_iterator はテンプレート クラスであり、 istream_iterator< int> はテンプレートのインスタンスです。istream_iterator< int>() を記述すると、istream_iterator< int> オブジェクトの値の初期化がトリガーされます。これは、ゼロ初期化 + 暗黙的なデフォルト コンストラクター ( http://en.cppreference.com/w/cpp/language/value_initialization ) の呼び出しを意味します。istream_iterator< int> オブジェクトのデフォルトの初期化も同様に機能すると考えたので (トリガーはデフォルトのコンストラクターを呼び出します)、これを試しました。
しかし、これはコンパイルされません:
エラー: ',' トークンの前にプライマリ式が必要です
何が起こっているのかわかりません。どんな説明でも大歓迎です。
c++ - C ++ユーザー入力をベクトルにロードする
ユーザーがコマンドとデータを入力できるコマンド ライン アプリを作成しようとしていますが、istream_iterator がどのように機能しているかがよくわかりません。現在、すべての単語に対して新しい while ループを作成していますが、これは必要なものではありません。
c++ - 2 を実行します。同じ入力イテレータ範囲に並んでいる
から取得した一連の数値の合計を計算する場合std::istream
は、次のようにします。
ただし、それらの平均を計算するには、2 つの異なる結果を累積する必要があります。
- 総額 (
std::accumulate
) - 合計数 (
std::distance
)
これら 2 つのアルゴリズムを「マージ」し、イテレータ範囲の単一パスで「並べて」実行する方法はありますか? 私は次のようなことをしたいと思います:
これは可能ですか?
c++ - C++ での istream_iterator の奇妙な結果
プログラムに入力すると1 2 3 c
(最後の要素 'c' は cin の状態を EOF にするためのものです)、最終的にvin2
要素が含まれます: 2 3
;ただし、変数の宣言に注釈を付けるin_iter
と、同じ入力でvin2
要素が含まれます: 1 2 3
;How変数の宣言はin_iter
このプログラムに影響しますか?ありがとう!
c++ - 偽陽性を与えるスピリットistreamイテレータをブースト
そのため、このファイルの文字を入力として解析する精神を取得しようとしています。可能であれば、文字列全体をメモリに読み込まないようにしたいと思います。
これは私の現在の関連コードです。Rosters_Grammar は、目的の文法を指定するために使用している文法ファイルです。
発生する問題は、私の解析が何らかの理由で常に成功することです。名簿の文法を考えると、入力の一部を読み取っていることがわかります。これは、それに応じてアクションを実行しており、適切な入力に対して期待どおりに機能するためです。ただし、パーサーは不正な入力で失敗することはなく、ファイルの途中で停止して true を返すだけです。
現在のファイルの内容は、int と文字列の繰り返しです。
45 ブリー 23 バタースコッチ
よく読んで受け入れる必要があります。のような文字列
「45りんごりんごりんご」
あってはなりません。ただし、この文字列を考えると、パーサーは失敗するはずです。代わりに、「45 Apple」に対してアクションを実行し、解析に対して true を返します。イテレータに問題があると思いますが、よくわかりません。上記の投稿されたコードでは、パーサーとして qi::int_ があり、入力データに関係なく常に成功します。したがって、私の文法ファイルがここの問題に関連しているとは思いません。これまでに失敗したデータを取得した唯一の方法は、パーサー入力として !qi::eps を使用することです。
誰かが私に与えることができる助けをありがとう!
編集: もう少し調べてみたところ、実際にはスキッパーが何らかの理由で問題になっていると思います。私の理解では、phrase_parse には 2 つの反復子、ある種の文法、およびスキップ パーサーが渡されます。スキップパーサーに基づいて入力をトークン化し、それらのトークンを文法で使用します。
イテレータ型の空白のスキップを無効にしないと、私の結果は「45 appleappleapple」を解析し、「45 apple」のみで成功します。