2016-04-25 26 views
0

私はC++の新バージョンである を作成しました。次にファイルを作成し、int値を書き込んでください。 次に、これらのint値をget function!(ここでは例外の例外はint型です) 実際にはこれはインデックスファイルなので、ここではint値を取ります。 しかし、私はfstream.putとfstream.getの両方がchar値しか操作できないことを発見しました。 誰かが私の仕事をどうやって手助けしたいのですか? そしてここでは私のコードの下fstream get()でC++でintを取得する方法

vector<int> tra1; 
vector<int> tra2; 
int last_capa = 0; 
    for(int i=1;i<97;i++){ 
     output.put(tra1[i-1] * 5 + tra2[i-1] + last_capa); 
     last_capa += (tra1[i-1] - 1) * 5 + tra2[i - 1]; 
    } 

はここでint型 を読み込むためのコードである私はあなたの助けのための

vector<int> tra4 
output.seekg(100); 
unsigned int n = output.get() + tra4[2]; 

感謝を動作させるためにint型の数を取得しよう

Haoran

+0

http://stackoverflow.com/questions/4672991/proper- fstream-read-and-write-member-functionsのためのキャスト 'char *'から読んでいるものを、読みたいタイプにキャストしなければなりません。 –

+0

ファイルに「int値」が含まれていません。人間に数字のように見えるテキストを含んでいます(ASCII単位でレンダリングされた場合)。 –

答えて

0

古いCのメソッドsprintfを使って文字列にintを入れて、その文字列をファイルに入れてみると、

sprintf(theNameOfYourString,"%d",n); 

編集:もちろん、あなたのファイルに文字列theNameOfYourStringを置く必要があります。sprintfは物事をStringに配置することしかできません。

+0

通常、 'C++'では 'operator <<'をオーバーロードして同じ結果を得ます。 –

+0

あなたのお手伝いをしてくれてありがとうRoncoli。しかし、もし私があなたの方法でそれを行うなら、int値をどのように戻すことができますか? – Haoran

+0

わかりませんが、get()関数がStringを返すとします。 atoi()のように、文字列をintに変換するこの文字列の操作を行うことができます。 EDIT:ここにリンクがあります:http://www.cplusplus.com/reference/cstdlib/atoi/ –

1

また、getの代わりにfstreamの演算子>>を使用して、ファイルからintに値を読み取ることができます。

fstream fs("input.txt", std::fstream::in); //input file 
int k; 
while(fs >> k) 
{ 
    //do something with k 
} 
fs.close(); 
0

fstream演算子>>に代わる方法は、読み書きを使用することです。 int値を書き込むには:

std::ofstream f_out("my_file.txt", std::ofstream::binary); 
int n; 
f_out.write((char *) & (n), sizeof(n)); 

Anが読むには:

std::ifstream("my_file.txt", std::ifstream::binary); 
int n; 
f_in.read((char *)&n, sizeof(n)); 

が100回目のintを読むには:

std::ifstream("my_file.txt", std::ifstream::binary); 
f_in.seekg(100*sizeof(int), std::ios::beg); 
int n; 
f_in.read((char *)&n, sizeof(n)); 
関連する問題