問題タブ [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++ - CGAL の istream_iterator
お恥ずかしい話ですが、しばらくCGALを使っていませんでした。CGAL のConvex_hull_2/convex_hull_yz.cppの例で、cmd によるリダイレクトではなく、ファイルから入力を取得しようとしています./convex_hull_yz < convex_hull_yz.cin
。コードは次のとおりです。
そして、ここにrefがあります。だから明らかに私の試みはうまくいきません:
関連する質問:ファイルを 1 行ずつ反復できる C++ イテレータはありますか? 、わかりましたが、CGALに接続できません。アイデアはありますか?
c++ - 左辺値 istringstream istream_iterator に必要?
Visual Studio でastring foo
を指定すると、次のようにして単語を a に分割できますvector
。
しかし、これは gcc 5.1 ではコンパイルできません。エラーが発生します:
型の右辺値からの型
std::istream_iterator<std::basic_string<char> >::istream_type&
{aka }の非 const 参照の無効な初期化std::basic_istream<char>&
std::basic_istream<char>
gccにバグがあり、私たち自身のJonathan Wakelyによって修正されたことがわかりました。istringstream
これはそのバグの拡張ですか、それともここで Rvalue を使用することは違法ですか?
c++ - すべてのリストが入力されているのはなぜですか
したがって、定義が与えられた場合:
の抽出演算子を作成しましたTache
:
ただし、この抽出演算子をメンバーで使用しようとするとistream_iterator
、precedentTask
次の要素に出血しているようです。たとえば、次のようになります。
私は得ています:
A 3
B 4 A
C 2 AA
E 5 AAA
G 3 AAAA
J 8 AAAABH
H 7 AAAABHCEG
I 6 AAAABHCEGG
F 5 AAAABHCEGGH
私の予想ではなく:
A 3
B 4 A
C 2 A
E 5 A
G 3 A
J 8 BH
H 7 CEG
I 6 G
F 5 H
を誤用していsregex_token_iterator
ますか?
c++ - istream_iterator がゼロ初期化しない
これは最小限で、完全で、検証可能な例です。とにかく、構造体を考えると:
私は次のことができます:
ただし、これにより結果が得られます。
-1215720516 1
2 1
2 3
4 3
4 5
6 5
6 7
8 7
8 9
0 9
をゼロ初期化するFoo
には、次のコードを記述できます。
これにより、m に期待される結果が得られます。
0 1
2 0
0 3
4 0
0 5
6 0
0 7
8 0
0 9
0 0
変数を完全に上書きしない抽出演算子を持つことは大雑把であることを理解しています。これは最初、ここでの私の回答とここでの私の質問に由来しています。私の考えでは、読み取りの合間に変数をゼロ初期化するというより自然な期待がありました。いずれにせよ、変数が読み取り間でゼロ初期化されるように使用することは可能ですか、それとも-loop を使用する必要がありますか?istream_iterator
for
c++ - ストリームをリセットせずに istream_iterator を使用するにはどうすればよいですか?
私はこの答えを書きました: https://stackoverflow.com/a/40181583/2642059これは、istream_iterator<int>
含まれているループがヘッダーを読み取った後、整数を読み取るためにを使用します。したがって、テキストは次のようにフォーマットされます。
HR0
012312010
001230202HR1
012031020
012320102
012323222
012321010HR2
321020202
私はそのテキストを持っています: istringstream input
. を使用して整数を読み取れるようにしたいのですがistream_iterator<int>(input)
、非が見つかるまで読み取ってからint
、不良ビットを に設定しinput
ます。
istream_iterator<int>
それを回避する方法はありますか、それとも読書を終えるたびに悪いビットをクリアする必要がありますか?
c++ - 任意終了の設定 istream_iterator
istream_iterator
デフォルト構築以外のエンディングを設定することはできますか?
ユースケースの 1 つはvector<int>
、 から最初の 13 要素で を初期化することistream_iterator<int>
です。vector<int>{ istream_iterator<int>(cin), x)
ここx
で、 は からちょうど 13 要素離れた反復子ですistream_iterator<int>(cin)
。
c++ - C++では、前進すると「現在の」要素が無効になるイテレータインタフェースを実装しても問題ありませんか?
ユーザーがファイルからデコードされたオブジェクトを反復処理できるようにする C++ インターフェイスを設計しています。このデコード処理はやや遅いです。
これにはイテレータインターフェースを考えているのですが、不要なコピーは避けたいので(ユーザー側)以下を考えています。
object
前の使用例の は、反復子インスタンスの内部にあるオブジェクトへの参照です。
これは間違っていますか?ここで他にどの慣用的なインターフェースを提案しますか?
ストリーム インターフェイスについて考えましたが (考えてみてstd::istream
ください)、データを読み取るメソッドもコピーを返します (文字を抽出します)。
c++ - istream_iterator がストリームから大量に消費する
stdin から次の入力を取得します。
最初の行はキューの数を表します (この値を と呼びましょうn
)。次に、各キューの最初の行にl
キューの長さを示す値があり、その後に実際のキューが続きます。
istream_iterator
次のようにを使用して、キューをベクトルに入れようとしています。
このコードは、次の出力を生成します。
ご覧のとおり、最初のキューは正しく読み取られています。しかし、2 番目はではなくl
であるべきです。5
2
に何が起こってい5
ますか? イテレータによって消費されますか?どこでエラーをしましたか?
c++ - 後で使用するために istream の位置を保存する
istream イテレータを保存するコードを以下に記述しました。私が望むのは、後で指定された位置の文字列にコピーするためにイテレータを保持することです。ストリームを最初にリセットするまで、これは正常に機能します。出力は "teet" bis 私が欲しかった "tees" です。イテレータをストリームの位置から独立させる方法はありますか?