ファイルストリームでファイルを開いていません。「参照」ボタンがあり、それをクリックすると、他のすべての参照ボタンと同様に、ファイルを選択するオプションが表示されます。次に、その種類のファイルを開くようにすでに定義されているアプリケーションでファイルが開かれます。たとえば、pdfファイルはadobeで開かれ、.txtはメモ帳(またはメモ帳++または開くように設定されているその他のテキストエディタ)で開かれます。 .txtファイル)。そのファイルの特定の時間にロードされたコンテンツの量を取得したいのですが、そのファイルの部分的にロードされたコンテンツのサイズを取得する方法はありますか?
質問する
81 次
2 に答える
1
次の仮定を行います。
- あなたの「事前定義されたアプリケーション」は、実際にはあなたの管理下にないライブラリですが、あなたのためにファイルを読んでいます
- ファイルの読み取りポインタがどこまで進んだか知りたい
- 「事前定義されたアプリケーション」が使用しているファイル (
FILE *
またはifstream
、POSIX ファイル記述子、または Windows ファイル)を表す基になるオブジェクトにアクセスできます。HANDLE
でファイルをfopen
読み取り用に開いた場合は、 on を使用ftell
しFILE *
ます。
FILE *infile;
//...
long position = ftell(infile);
がある場合はifstream
、 メソッドを使用しtellg
ます。
std::ifstream infile;
//...
long position = infile.tellg();
ファイルが で読み取り用に開かれた場合、ファイル記述子でopen
使用できます。lseek
int infile;
//...
long position = lseek(infile, 0, SEEK_CUR);
OpenFile
を使用して Windows で読み取り用にファイルを開く場合はSetFilePointer
、HANDLE
.
HANDLE infile;
//...
long position = SetFilePointer(infile, 0, 0, FILE_CURRENT);
于 2012-06-26T04:39:28.397 に答える
0
C++ ストリームを使用している場合は、tellg
関数を使用してファイル内の位置を取得できます。
これは、ストリーム文字のサイズに相対的な位置を返すことに注意してください。たとえば、istream
(を使用するchar
)の 10 文字を読み取ると 10 と報告されますが、 (を使用する)tellg
から 10 文字を読み取ると、報告される量は のサイズに応じて 20 または 40 になります。wistream
wchar_t
wchar_t
于 2012-06-26T05:15:14.590 に答える