質問が変更されましたので、お聞かせください。あなたが読もうとしているファイルの形式は何ですか?簡単に内容に
/* C way */
FILE *fp = fopen("text.bin", "rb"); /* note the b; this is a compound mode */
/* C++ way */
std::ifstream ifs("test.txt", ios::in | ios::binary);
読書:ファイルを開く方法をバイナリファイルの場合
が必要ないくつかの変更があります。しかし、あなたのファイルには最初の2つの整数があることを覚えておいてください。だから、最初の2つの整数を最初に読むことが最善の策です。 2つのバッファーを使用する必要があります.1つは幅と高さ、もう1つはファイルの残りの部分を読み取るための値です。
今
/* C way */
fread(buf, sizeof(int), 2, fp); /* the syntax changes, FILE pointer is last */
/* C++ way*/
ifs.read(buf, sizeof buf);
、トリッキーな部分:二つの整数で
char buf[ 2 * sizeof(int) ]; /* will store width and height */
読む:だから、最初の二つの整数で読むことができます。あなたはものを二重に変換する必要があります。これは、シンプルな割り当てが動作するかどうか、またはバイトスワップが必要かどうかにかかわらず、システムのエンディアンに依存します。別のポスターが指摘したように、WriteInt()
はビッグエンディアン形式の整数を書きます。あなたはどのシステムにいるのか把握する。そして、あなたはさらに進むことができます。
FILE
は、Cデータ構造です。これは、C互換性のためにC++に含まれています。
/* The C way */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE *fp = fopen("test.txt", "r");
int i = 0;
if (fp) {
fscanf(fp, "%d", &i);
fclose(fp);
}
printf("%d\n", i);
}
あなたが読書のためのファイルを開くにはstd::ifstream
ものを使用することができます:あなたはこれを行うことができます。ファイルの内容を読んで、必要な情報を自分自身から抽出するには、他の手続きを使って内容を読み込まなければなりません。
/* The C++ way */
#include <fstream>
#include <iostream>
int main() {
std::ifstream ifs("test.txt");
int i = 0;
if (ifs.good()) {
ifs >> i;
}
std::cout << i << std::endl;
}
あなたは、これが最も推奨される方法ですが、同様にC++でCスタイルの関数を使用することができます注:
/* The C way in C++ */
#include <cstdio>
#include <cstdlib>
int main() {
using namespace std;
FILE *fp = fopen("test.txt", "r");
int i = 0;
if (fp) {
fscanf(fp, "%d", &i);
fclose(fp);
}
printf("%d\n", i);
}
[注:両方の例は、あなたが読んでテキストファイルを持っていると仮定から]
-1不明な質問の場合。バイナリ形式でint形式で保存するか、テキスト形式で保存するか、その他の形式で保存したいかどうかは言及されていません。また、C++で従来のCインターフェイスを使用する方法を尋ねるので、非常に有用な質問でもありません。代わりにiostreamsを使用してください。 – flodin
彼は質問する正しい質問を知らなかったので、彼に投票する必要はありません。 –
"buffer =(int *)(sizeof(int));" malloc()や何かの呼び出しであるはずですか? – bk1e