問題タブ [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.
c++ - C++ 読み取り/書き込みバイナリ モード
私は学校で C++ を学んでいます。私の意見では、C++ は美しい言語ですが、この厄介な問題があります。教科書ではFILE *text
andscanf
と と書いてありprintf
ますが、個人的には好きではありません。私は慣れてきましたcin
そしてcout
または で<<
>>
より良い言い方をしfstream
ます .
だからここに私の問題があります:
バイナリモードでデータを書き込むアプリケーションを作成する必要があります (半分は実行しましたが、何らかの理由でバイナリモードで書き込みません)。
都市 (orasul) を座標 (x と y) に書き込んだ後、それらを検索して値を取得する必要があります。(ここでは を使用しようとしました
string.find
)しかしseekg
、「バイナリモード」で検索し、それらの値を構造体で分離するために使用する必要があります。
皆さんがどうにかして私を導くことができれば、私はここでかなり迷っています. そして、私が得ることができる方法はありsizeof(struct)
ますか?
c++ - fstream seekg()、seekp()、および write()
ファイルに書き込んでいるときにどのようseekg()
に動作するかについて、いくつかの明確化を探しています。seekp()
たとえば、次のようなファイルがあったとします。
ここで、ファイルを開いて、値の読み取りと書き込みをシークしたいと考えています。
ここで、ファイルの最後に書き込みたいと思います。seekg()
関数はシーク カーソルを移動するだけなので、seekp()
カーソルはファイルの最後にあるはずですよね? そう:
私のファイルは次のようになります:
オフセットをシークし、その値を挿入したばかりの値へのオフセットとして書き込むことを選択した場合、ファイルはどうなりますか。たとえば、そのオフセットに 12 を挿入したのでoffset 8
保持したいと思います。eofOffset = 20
私が行った場合:
私のファイルを次のように正しく書き換えますか?
seekg()
およびseekp()
関数を使用してエラーが発生した場合はお知らせください。
c++ - getline で seekg が機能しないのはなぜですか?
myFile で EOF に到達すると、Seekg が機能しないようです。
だから、今私はループごとに入力ストリームを開いています:
しかし、私はむしろ 0 の位置を目指したいと思います。どうすればそれを達成できますか?
c++ - ファイルの先頭から指定されたバイトまでのC ++読み取り
ファイルの最初のバイトからユーザーが指定したバイトまで読み取るファイルを書き込もうとしています。ロジックについて助けが必要です。たとえば、ファイルに a から z までの文字だけが含まれていて、最初の 10 個を読み取って表示したい場合。ここに私が書いたものの一部があります:
c++ - ファイルの終わりに達した後にファイルから読み取る
readNextString(ifstream &file , char* &pBuffer)
私はファイルから次の文字列を抽出するという名前の関数を持っています','
または'\n'
到達するまで、文字列の最初と最後にある空白を削除し、残りを pBuffer に保存し、すべてが正常に機能した場合は true、そうでない場合は false を返します。ファイルの終わりに到達するまで、すべてが機能します。eof
フラグが設定されていると、get ポインターを移動できません。私はこれを試しました:
...そして、文字列の末尾にある空白を削除します。これはほとんど役に立ちました。関数はスペースなしで文字列を抽出しますが、無限ループが発生します。
私の実際の質問は次のとおりです。次の文字がEOF
であるかどうかを確認するにはどうすればよいですか。できない場合は、これを行う別の方法はありますか?
これが私の実際の機能です:
そして、それは私がそれを呼ぶ1つの場所です:
私が十分に明確だったことを願っています。他の間違いやエラーの可能性を見つけた場合は、喜んでそれを聞き、そこから学びます.
c++ - ifstream seekg の何が問題になっていますか?
データをシークして再読み取りしようとしています。しかし、コードは失敗します。
コードは
私の入力テストファイルは
出力は
誰が何が悪いのか教えてもらえますか?
c++ - シーク、相対または絶対位置?
ファイルから配列を読み取る必要があります。配列はファイル内で連続して順序付けられていないため、次の要素を取得するには「オフセット」バイトをジャンプする必要があります。非常に大きなファイルを読み取ると仮定すると、より効率的です。
1) 増分相対位置を使用します。
2) 絶対位置を使用します。
オプション1:
オプション 2:
c++ - Seekg(ios::beg) がリダイレクトされた入力の先頭に戻らない
私はハフマン エンコーダーを作成しています。そのためには、入力 (常にリダイレクトされたファイル) を読み込んで周波数を記録し、コードブックを作成してから、入力を再度読み込んでエンコードできるようにする必要があります。
私の問題は、ファイルをcinから2回読み取る方法を現在テストしようとしていることです。
ファイルがリダイレクトされ、パイプされない限り、 cin.seekg(0) または cin.seekg(ios::beg) または cin.seekg(0, ios::beg) はすべて完全に正常に機能するはずであることをオンラインで読みました。しかし、私がそれを行うと、cinの位置にはまったく何もしないようです.
ここに私が現在使用しているコードがあります:
デバッグすると、40 行目の while ループでスタックし、常に改行文字を取得しているように見えます。なぜこのループから抜け出せないのでしょうか? cin.seekg() は実際には入力をリセットしていないと思います。