問題タブ [peek]
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 - stdinバッファを覗く方法はありますか?
stdin
これは、デフォルトではバッファリングされた入力であることがわかっています。その証拠は、次のstdin
ような「データを残す」メカニズムのいずれかを使用していることscanf()
です。
./a.out
hello
hello、左は10です
10
もちろん改行です...
私はいつも興味がありますが、そこにある可能性のstdin
あるものを削除せずにバッファを「覗く」方法はありますか?
編集
より良い例は次のとおりです。
「at.ct」を入力すると、改行だけでなく 「data」( ct\n
)が残ります。stdin
macos - clang および libc++ istream::peek() が eof フラグを設定しない
私は Mac OSX 10.8.1 (Mountain Lion) を使用しています: Apple clang バージョン 4.1 (tags/Apple/clang-421.11.66) (LLVM 3.1svn に基づく) - 最新版が利用可能です。
libc++ std::istream::peek() を使用した Clang は、eof 検出に関して正しく動作しないようです。libstdc++ では問題は発生しません。
以下の簡単な例では、std ライブラリのバージョンに応じて異なる結果が得られます。
test.cpp:
「clang++ -stdlib=libstdc++ test.cpp」でコンパイルされたファイルからの出力 (これは正しいようです):
「clang++ -stdlib=libc++ test.cpp」でコンパイルされたファイルからの出力 (これは私には正しくないようです):
この問題の最も簡単な回避策は、libc++ の代わりに libstdc++ を使用することです。残念ながら、いくつかの c++11 機能を使用する必要があるため、libc++ が唯一の解決策です。
eof ビットの動作で libc++ と libstdc++ の不一致を報告している投稿がいくつか見つかりましたが、私のものとは異なります。
誰かが私のものと同じ問題に遭遇しましたか。それを解決するための一般的な解決策はありますか?いくつかの汚い回避策を想像することはできますが、使用したくありません。
助けてくれてありがとう
c# - StreamReader.Readline() は、ファイル内の行をカウントする最速の方法ですか?
しばらく見回していると、ファイル内の行数を把握する方法についてかなりの数の議論が見つかりました。
たとえば、次の 3 つです。
c#テキスト ファイル内の行数をカウントする方法
テキスト ファイル内の行数を確認する 行数
をすばやくカウントするには?
それで、私は先に進み、私が見つけることができる最も効率的な(少なくともメモリに関しては?)と思われる方法を使用することになりました:
しかし、ファイルの行自体が非常に長い場合、これには永遠に時間がかかります。これに対するより速い解決策は本当にありませんか?
StreamReader.Read()
orを使用しようとしましたがStreamReader.Peek()
、「もの」(chars? text?) があるとすぐにどちらかを次の行に移動させることはできません (または方法がわかりません)。
アイデアはありますか?
結論/結果(提供された回答に基づいていくつかのテストを実行した後):
以下の 5 つの方法を 2 つの異なるファイルでテストしたところ、一貫した結果が得られました。これは、プレーン オールドStreamReader.ReadLine()
が依然として最速の方法の 1 つであることを示しているようです。
ファイル #1:
サイズ: 3,631 KB
行数: 56,870
ファイル #1 の秒単位の結果:
0.02 --> ReadLine メソッド。
0.04 --> 読み取り方法。
0.29 --> ReadByte メソッド。
0.25 --> Readlines.Count メソッド。
0.04 --> ReadWithBufferSize メソッド。
ファイル #2:
サイズ: 14,499 KB
行数: 213,424
ファイル #1 の秒単位の結果:
0.08 --> ReadLine メソッド。
0.19 --> 読み取り方法。
1.15 --> ReadByte メソッド。
1.02 --> Readlines.Count メソッド。
0.08 --> ReadWithBufferSize メソッド。
以下は、私が受け取ったすべてのフィードバックに基づいてテストした 5 つの方法です。
perl - Perlでファイルの次の行を見る方法
ファイルを開いて解析するコードがあります。このテキストドキュメントは冗長な構造であり、複数のエントリがあります。ループ内を覗いて、新しいエントリがあるかどうかを確認する必要があります。新しいエントリがある場合は、プログラムが抽出するすべてのデータを解析できるようになります。これまでの実装を最初に示しましょう
java - java.util.Stack.peek(不明なソース)エラー
私は次のようにJavaスタックを使用しています:
そして後で、ある時点で、プッシュ、ピーク、およびポップを使用しています。
正常に動作している間push
、次のエラーが発生しpop
ますpeek
:
また、関数を呼び出した行のメイン関数でエラーが発生します。
java - 私のJavaメソッドコードの何が問題になっていますか?-スタック
スタックs1からnull要素を取得し、それらをs2に配置するメソッドを作成するために、ここ数時間を費やしました。次に、クラスはスタックを出力する必要があります。方法は次のとおりです。
Eclipseは、peek()メソッドとpush()メソッドの両方でエラーを出します。pop()メソッドを許可します。これらのメソッドが継承されていることは私の理解でしたか?どんな助けでも大歓迎です!
c# - ピークを使用したスレッドセーフな再入可能キュー
私の基本的な問題は、キューが空の場合はすぐにキューからアイテムを処理する必要があるか、キューにアイテムを追加して、すでに処理されているアイテムがある場合は終了する必要があることです。
私は、ピークを使用して物事を単純化する手法を試していますが、邪魔になる可能性のある落とし穴があるのではないかと考えています。ありがとう!
java - JMS にはキュー ピークの概念がありますか?
一般的なコンピュータ サイエンスの観点から、キューを論理的な意味で考えるとき、キューの最初のアイテムを「覗く」ことができると考えます。
JMS API を見るとMessageListener
、OnMessage()
メソッドがあります。これは、「私たちに電話しないでください-私たちがあなたに電話します」のように少し感じます.
JMS にはキュー ピークの概念がありますか?
groovy - イテレータでグルーヴィーな「のぞき見」をしていますか?
処理のためにアイテムを繰り返し処理しながら、先に「ピーク」または「スキップ」するさまざまなシナリオがループ内にあります。
1 つのシナリオは、ファイルの行を列挙していて、行末に次の行を現在の行と結合することを示す「継続」文字があることです。それほど難しくない単純なループの場合は、次の行を読み込んで、カウンター/インデックスをバンプするだけです。
私のイテレータでこれを行うためのパターンは明らかではありません。クロージャーを終了せずに、次の行を効果的に消費したいと考えています。しかし、それが可能かどうかさえわかりません。クロージャーを使用したこの反復パターンに適した設計パターンはありますか? おそらく、処理のためにアイテムをプッシュ/ポップするためのスタックを備えたイテレータの形式ですか?