問題タブ [seekg]
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.
include - 「シーク識別子が見つかりません」
main というプログラムがあります。
そして、other.h:
エラーが表示されます:
「seekg」: 識別子が見つかりません
このエラーが発生する理由と修正方法を教えてください。
c++ - ファイルの内容が変更された後、ifstreamを使用して同じファイルから(EOFまで)読み取ります
要件 :
特定のファイルからEOF(一度に16バイト)まで読み取ってから、5秒間スリープと言う必要があります。さて、5秒後、ファイル(その時点で内容が追加されている)から読み込もうとすると、意図したデザインは、前に残した場所から読み取り、内容を再度スキャンするようになっている必要があります。 (一度に16バイト)EOFに達するまで。
次のようにifstreamを使用して、指定されたファイルから(EOFまで-16バイトずつ)読み取る(基本的な)コードを記述しました。
要件に合わせてこれを変更する必要があります。seekg()呼び出しを使用してみましたが、どういうわけか失敗しました。初めてファイルにアクセスしてファイルストリームに読み込んだときに、プログラムがファイルに排他ロックを設定したのではないかと思っていました。つまり、次回はファイルから読み取ることができなくなります。 。
誰かがそれがどのように行われるべきかを私に示すことができますか?
ファイル名: "from4to5"内容:
BD8d3700indiaC#EBD6d4700godgeD3EBD9d1311badge3TE
5秒以内に、他のプロセスが同じファイル「from4to5」に書き込み(追加)し ます。
ファイルの内容:
BD8d3700indiaC#EBD6d4700godgeD3EBD9d1311badge3TEBD6d1210clerk41EBD2d1100mayor47EBD4d2810bread6YE
これで、プログラムがファイル「from4to5」から読み取る場合、EOFに遭遇するまで、前に離れた場所から16バイトずつ読み取る必要があります。
今回の出力の意図は次のとおりです。
c++ - ifstreamsでseekgを使用して有効な位置を維持する
ファイルの解析をより堅牢にしようとしています。ifstreamを使用してseekg
、ファイル内で有効な位置にいることを確認するにはどうすればよいですか?
これは動作しません:
現在のイテレータが終了イテレータをはるかに超えてプッシュされていると想定しているため、peek()が真になることはありません。
c++ - seekg() が不思議なことに失敗する
2884765579 バイトのファイルがあります。これは、その数値を返すこの関数で二重にチェックされます。
次に、次のことを行います。
これにより、フェイルビットが設定されます。errno
変更されません。これをトラブルシューティングするには、どのような手順を実行できますか?
私は次のことを絶対に確信しています:
- ファイルサイズは実際には 2884765579 です
pos
本当に 2884765579 です- フェイルビットは .seekg() の前に設定されていません
- failbit は .seekg() の直後に設定され、その間に他の呼び出しは行われません
- ファイルはバイナリフラグで開かれます
編集:誰かが同じ問題に遭遇した場合..私が書いたこのコードを使用して(Windowsでのみ動作します)、頭痛の種が少なくなります:
c++ - カスタム istream/streambuf に seekg() を実装するにはどうすればよいですか?
私は 10 年前は C++ の専門家でしたが、ここ 10 年間は Java をプログラミングしてきました。小さなサードパーティの XML パーサーを使用する C++ プロジェクトを開始しました。XML パーサーは、STL istream を受け入れます。私の XML データは Windows COM IStream から来ています。私は、Right Thing を実行して、IStream データを取得し、istream を介して XML パーサーに提示するアダプターを作成すると考えました。
http://www.mr-edd.co.uk/blog/beginners_guide_streambufの優れたチュートリアルに従い、基になる COM IStream からデータを取得する COMStreambuf を作成し、それをカスタム COMIstream のバッファーとして使用しました。すべて問題ないように見えますが、パーサーから読み取りエラーが発生します。
パーサーは、istream で seekg() を使用してファイル全体をメモリに読み込み、そのサイズを調べてから、seekg() で最初に戻って一度に読み込みます。当然のことながら、前述のチュートリアルでは、明らかに書かれたことのない「[シークの実装に関する指示] を別の投稿のために保存する」ことにしました。
カスタム istream/streambuf で seekg() を実装するために何をする必要があるか教えてもらえますか? 私は自分でそれをやってみようと思います (私の最初の傾向は、istream で何かをオーバーライドすることです) が、STL の深部での経験が浅く、Java のメンタリティがあるため、何か不完全なことをして脆弱な解決策になるのではないかと心配しています。(たとえば、チュートリアルを読まなければ、たとえば、新しい streambuf を記述してカスタム istream を作成したり、デフォルトのロケールで imbue() を呼び出す必要があるなどとは思いもしませんでした。)
助けてくれてありがとう。私はこのサイトに非常に感銘を受けました.---参加者の知識と、誰が最良の答えを持っているかを認める友好的で正直な性格の両方に. :)
c++ - どのような種類の入力ストリームをseekgと呼ぶことができますか?
ファイルの最初の数行を読み取ってそのタイプを判別し、次にファイルを閉じて再度開き、正しいインタープリターを使用してファイル全体を再度読み取ることができる関数(レガシー)があります。要点は次のとおりです。
すでに開いているストリームで機能する同様の関数が必要でした。ostream &
--の代わりに取る新しい関数を作成しましたchar *filename
-基本的にこれ:
istream
が実際にastringstream
またはanの場合は機能するようfstream
ですが、運が良かっただけなのかと思います。私もseekg
-ingで小さなテストをしstd::cin
ました、そしてそれは私を驚かせました。
だから私の質問:あなたはどのような種類のストリームを使用することが許可されてseekg
いますか?いつ失敗しますか?仕様の参照は素晴らしいでしょう-私は調べましたが、、、、の内容はseekg
まったくpubseekpos
役に立ちませんでした。seekpos
seekoff
(以下のように)新しい機能の観点から元の関数を再実装したいのですが、それが安全かどうかはわかりません。
seekg - while(file.good()) {....}の後にseekgが機能しない
以下が機能していないように見えることにかなり動揺しています。
私は myfile.close などを試しましたがifstream myfile2;
、ファイルをリロードするために新しいものを作成しました。何も機能しません。あたかもこのシークが普遍的か何かであるかのようであり、プログラムごとに 1 回しか機能しません。
c++ - ユーザーが seekg を使用して選択したピクセルからの C++ RGB 値
.raw 画像 (一般的な 100x100 画像) をロードし、範囲内で (x, y) 座標を選択するようユーザーに要求し、seekg を使用してそのピクセルの赤、緑、青の値を表示するプログラムを作成する必要があります。関数。ピクセルから RGB 値を取得する方法がわかりません。これまでに取り上げた教科書のすべての章を読みましたが、RGB 値の取得については何もありません。
座標を要求し、範囲外の場合はエラー メッセージを表示するコードは正常に動作しています。Seekg を使用して RGB 値を取得するためのコードを作成しようとしたときにのみ、問題が発生します。サイトでさまざまな質問を見てきましたが、ここには良い情報がありますが、RGB値を取得するためにseekgを使用した回答はありません.
コードを作成してくれる人を探しているわけではなく、正しい方向へのガイダンスとプッシュを探しているだけです。
そして、私は途方に暮れています。
どんな助けでも大歓迎です。
c++ - C++ ストリーム (iostream) がシーク可能かどうかを確認する方法
ostream の istream がシーク可能かどうかを確認する方法はありますか?
無関係な理由でシークが失敗する可能性があるため、テストシークを実行してフェイルビットをチェックすることは正しくないと思われます。
それが違いを生む場合、LinuxとMacで動作するためにこれが必要です。
c++ - シークして非互換性を伝える
C++ コンソール アプリケーションを作成しています。size(int) の rowSize と columnSize で Matrix を作成した後、テキスト ファイル内の文字を Matrix に書き込もうとしましたが、リーダーの位置が -1 であるためループが実行されず、0 にすることができませんでした。何かアイデアはありますか?