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

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

c++ - C++ 読み取り/書き込みバイナリ モード

私は学校で C++ を学んでいます。私の意見では、C++ は美しい言語ですが、この厄介な問題があります。教科書ではFILE *textandscanfと と書いてありprintfますが、個人的には好きではありません。私は慣れてきましたcinそしてcoutまたは で<< >> より良い言い方をしfstreamます .

だからここに私の問題があります:

  1. バイナリモードでデータを書き込むアプリケーションを作成する必要があります (半分は実行しましたが、何らかの理由でバイナリモードで書き込みません)。

  2. 都市 (orasul) を座標 (x と y) に書き込んだ後、それらを検索して値を取得する必要があります。(ここでは を使用しようとしましたstring.find)しかしseekg、「バイナリモード」で検索し、それらの値を構造体で分離するために使用する必要があります。

皆さんがどうにかして私を導くことができれば、私はここでかなり迷っています. そして、私が得ることができる方法はありsizeof(struct)ますか?

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

c++ - fstream seekg()、seekp()、および write()

ファイルに書き込んでいるときにどのようseekg()に動作するかについて、いくつかの明確化を探しています。seekp()たとえば、次のようなファイルがあったとします。

ここで、ファイルを開いて、値の読み取りと書き込みをシークしたいと考えています。

ここで、ファイルの最後に書き込みたいと思います。seekg()関数はシーク カーソルを移動するだけなので、seekp()カーソルはファイルの最後にあるはずですよね? そう:

私のファイルは次のようになります:

オフセットをシークし、その値を挿入したばかりの値へのオフセットとして書き込むことを選択した場合、ファイルはどうなりますか。たとえば、そのオフセットに 12 を挿入したのでoffset 8保持したいと思います。eofOffset = 20

私が行った場合:

私のファイルを次のように正しく書き換えますか?

seekg()およびseekp()関数を使用してエラーが発生した場合はお知らせください。

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

c++ - getline で seekg が機能しないのはなぜですか?

myFile で EOF に到達すると、Seekg が機能しないようです。

だから、今私はループごとに入力ストリームを開いています:

しかし、私はむしろ 0 の位置を目指したいと思います。どうすればそれを達成できますか?

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

c++ - ファイルの先頭から指定されたバイトまでのC ++読み取り

ファイルの最初のバイトからユーザーが指定したバイトまで読み取るファイルを書き込もうとしています。ロジックについて助けが必要です。たとえば、ファイルに a から z までの文字だけが含まれていて、最初の 10 個を読み取って表示したい場合。ここに私が書いたものの一部があります:

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

c++ - ファイルの終わりに達した後にファイルから読み取る

readNextString(ifstream &file , char* &pBuffer)私はファイルから次の文字列を抽出するという名前の関数を持っています','または'\n'到達するまで、文字列の最初と最後にある空白を削除し、残りを pBuffer に保存し、すべてが正常に機能した場合は true、そうでない場合は false を返します。ファイルの終わりに到達するまで、すべてが機能します。eofフラグが設定されていると、get ポインターを移動できません。私はこれを試しました:

...そして、文字列の末尾にある空白を削除します。これはほとんど役に立ちました。関数はスペースなしで文字列を抽出しますが、無限ループが発生します。

私の実際の質問は次のとおりです。次の文字がEOFであるかどうかを確認するにはどうすればよいですか。できない場合は、これを行う別の方法はありますか?

これが私の実際の機能です:

そして、それは私がそれを呼ぶ1つの場所です:

私が十分に明確だったことを願っています。他の間違いやエラーの可能性を見つけた場合は、喜んでそれを聞き、そこから学びます.

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

c++ - ifstream seekg の何が問題になっていますか?

データをシークして再読み取りしようとしています。しかし、コードは失敗します。

コードは

私の入力テストファイルは

出力は

誰が何が悪いのか教えてもらえますか?

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

c++ - シーク、相対または絶対位置?

ファイルから配列を読み取る必要があります。配列はファイル内で連続して順序付けられていないため、次の要素を取得するには「オフセット」バイトをジャンプする必要があります。非常に大きなファイルを読み取ると仮定すると、より効率的です。

1) 増分相対位置を使用します。
2) 絶対位置を使用します。

オプション1:

オプション 2:

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

c++ - Seekg(ios::beg) がリダイレクトされた入力の先頭に戻らない

私はハフマン エンコーダーを作成しています。そのためには、入力 (常にリダイレクトされたファイル) を読み込んで周波数を記録し、コードブックを作成してから、入力を再度読み込んでエンコードできるようにする必要があります。

私の問題は、ファイルをcinから2回読み取る方法を現在テストしようとしていることです。

ファイルがリダイレクトされ、パイプされない限り、 cin.seekg(0) または cin.seekg(ios::beg) または cin.seekg(0, ios::beg) はすべて完全に正常に機能するはずであることをオンラインで読みました。しかし、私がそれを行うと、cinの位置にはまったく何もしないようです.

ここに私が現在使用しているコードがあります:

デバッグすると、40 行目の while ループでスタックし、常に改行文字を取得しているように見えます。なぜこのループから抜け出せないのでしょうか? cin.seekg() は実際には入力をリセットしていないと思います。