問題タブ [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.

0 投票する
1 に答える
4832 参照

c++ - 簡単な istream_iterator の質問

私は C++ を初めて使用します。これがばかげた質問である場合は申し訳ありません。なぜこれが機能しないのか理解できないようです。最初のベクトルにコピーし、2 番目のコピー呼び出しをスキップするようです。

copy 関数を使用して、 istream_iterator 入力を任意の数のベクトルに読み取りたい (ベクトルごとに 1 回呼び出してコピーする)。つまり、コンソールに「1 2 3 4 5 ctrl+d」と入力して、最初のベクトルに 1,2,3,4,5 を入力できるようにしたいと考えています。次に、コンソールに「6 7 8 9 10 ctrl+d」と入力し、2 番目のベクトルに 6,7,8,9,10 を入力します。

問題は、最初のベクトルに何らかの入力を入力して control+d を押した後、cin の失敗状態に関係なく、cin の istream_iterator が istream_iterator() と同じままであることです。これにより、以降のすべての「copy」呼び出しが失敗します (istream_iteratorcin は、プログラムが eof として解釈する istream_iterator() と既に等しいため)。私の質問は次のとおりです。cinストリームとともにイテレータを「リセット」するにはどうすればよいですか? cin.clear() は実際にすべての失敗ビットをクリアしています。ただし、 istream_iterator(cin) は istream_iterator() と同じです。私が理解していることから、ストリームにバインドされている istream_iterators は、ストリームが失敗状態にある場合にのみ、デフォルトの istream_iterator 値と等しくなければなりません。私は何が欠けていますか?

0 投票する
1 に答える
1326 参照

c++ - ifstream を使用したコピー アルゴリズム

次のコードは、期待どおりに動作していません。それがどのように機能するかを理解するのを手伝ってください。

私のカスタム operator>> は 2 回呼び出されますが、内容は次のとおりであるため、1 回だけ呼び出されると予想されます。

ジョン:40:21-5821-0

0 投票する
2 に答える
433 参照

c++ - テンプレート使用時の奇妙なエラー文字列(InputIterator begin、InputIterator end);

そのようなコードセグメントが与えられた場合:

このコードは、istream_iteratorを使用してファイルから文字列を作成します。

文字列コンストラクターの最初のパラメーターが括弧のペアで囲まれていることに注意してください。かっこを省略するとエラーになります。VC ++ 2008では、リンクエラーが発生します。G ++では、コードの出力が間違っています。

かっこがとても不思議です。違いは何ですか、そしてその理由は何ですか?

0 投票する
2 に答える
1128 参照

c++ - istream_iterator の動作

私は 2 つのコードを持っていmain()ます。

これら2つの部分が一緒に使用される場合、つまり

ここで最初の部分は機能しましたが、2番目の部分は出力を提供します: Enter Three Strings : , , ,. この動作の背後にある理由は何ですか?

ありがとう。

0 投票する
2 に答える
291 参照

c++ - Priority_queue と入力ストリーム イテレータ

ご覧のとおり、cin を優先キューに転送する学校のプロジェクトがあります。まあ、私は「ちょっとやった...私がしたことは、リストにistream_iteratorを入力することです

それからpriority_queueへ、これは長期的には非常に非効率的だと思います.だから、仲介者なしで直接cinをpriority_queueに転送する方法はありますか. 私はそれをやってみましたが、コピー機能ではpriority_queueを引数として持つことができません。

0 投票する
2 に答える
2726 参照

c++ - 範囲がわからないのはなぜですか-std::istream_iteratorのbeginとendのオーバーロードを見つけるために?

私はこのようなコードを持っています

ここで、とは次std::istream_iterator<std::string>の ように定義されますbegin()end()

これは、マーク・ネルソンがドブ博士のここにも書いていることです。残念ながら、コードはVisualStudio2012でコンパイルできずエラーメッセージが表示されます

エラーC3312:タイプ'std ::istream_iterator<_Ty>'に対して呼び出し可能な'begin'関数が見つかりません

エラーC3312:タイプ'std ::istream_iterator<_Ty>'に対して呼び出し可能な'end'関数が見つかりません

質問:私が気付いていないこと、コンパイラのバグ(ありそうもないが、念のため)、または...ええと、何かアイデアはありますか?


Xeo のアドバイスに従って、この質問はかなりクリーンアップされます。より多くの背景と参照を提供するために、これはStackoverflowに関する他の質問に関連しています。私は、ラインベースの解析を通常のループよりもクリーンにする方法を考えていました。インターネットからのコーディングとチェックのビット、そして私は次のように作業スケッチを持っていました

しかし、私が改善しようとしたわずかな障害がありました。コンパイルに失敗し、好きではないコードのように書く方が自然に見えると思います

別のイテレータに注意してください。delimeter_tokensは、Nawazが親切にここに示したように(コードは複製されていません)、istream_rangeはコード合成ブログのように定義されています。前述のCodeSynthesisブログ投稿で宣伝されているように、開始と終了の実装は機能するはずです。

最後のルール(独立したbegin()およびend()関数へのフォールバック)により、既存のコンテナーを範囲ベースのforループインターフェイスに非侵襲的に適合させることができます。

したがって、すべての(無関係な)背景を持つ私の質問。

0 投票する
1 に答える
382 参照

c++ - EOF を文字列として再定義する

一連の単語を取得し、それらをベクトルに入れて、それらを処理するプログラムを作成しようとしています。機能する1つの方法を見つけました。それは次のとおりです。

ただし、別の方法を使用してそれを実行しようとしています。

しかしQuit、入力ストリームを終了して単語をベクトルに入れる平均的な EOF を作成する方法がわかりません。"Quit"文字列をストリーム ターミネータとして機能させるにはどうすればよいですか?

0 投票する
3 に答える
1128 参照

c++ - istreambuf_iterator の事前処理が機能しないのはなぜですか

完全なファイルの内容を文字のベクトルに読み込むことに関するistream_iterators を使用したベクトルの構築を読んでいました。ファイルの一部を文字のベクトルにロードしたいのですが。

前述の質問の受け入れられた回答は機能しますが、事前は機能しないため、これは機能しません。事前に機能しないのはなぜistreambuf_iteratorですか?

また

0 を返します。何が起こっているのか誰か説明してください!

0 投票する
4 に答える
351 参照

c++ - istream_iteratorcinの初期化は入力を待機します

このコードスニペットがあります。istream_iteratorオブジェクトは定義されているだけで使用されていないため、何も実行されず、アプリケーションはすぐに終了することを期待しています。しかし、アプリケーションを実行すると、入力を提供する前にアプリケーションが終了しません。なんで?

ArchLinuxで次のコマンドを使用してコンパイルしています:gcc 4.7.1、コマンド:g ++ -std = c ++ 11 filename.cpp