2017-08-23 19 views
1

こんにちは、ありがとうございます。これは非常に単純な質問ですが、私の神経に乗っています。私が望むのは、ファイルに書き込み、すべての整数を表示する整数を求めることです。私はファイルへの書き込みやファイルからの表示方法を学びましたが、成功しましたが、一度に両方を実行しようとすると整数だけが表示され、数字は表示されません。 fstreamやポインタの位置に関連する問題かもしれないと思います。整数をファイルに読み書きするプログラム

#include "stdafx.h" 
#include <iostream> 
#include <stdio.h> 
#include <fstream> 

using std::cout; 
using std::cin; 
using std::fstream; 
using std::endl; 

int a; 
int x; 

int main() { 
    fstream in; 

    in.open("op.txt", std::ios::app); 

    cout << "Write an integer" << endl; 
    cin >> x; 
    in << " " << x; 

    while (in >> a) { 
     cout << a << endl; 
     cout << in.tellg(); 
    } 

    in.close(); 
    return 0; 

} 
+1

なぜ同時に書き込みと読み取りを試みますか? あなたが読み書きを行う方法はシーケンシャルなので、あなたの推測は正しい - それはファイルポインタに関連しています。ファイルに書き込んだ内容を読み込むには、ファイルに「ランダムアクセス」を行う必要があります。 https://stackoverflow.com/questions/14393774/reading-random-access-files –

+0

をチェックしてください。最初のofstreamを書き込んで番号を尋ねてからファイルを閉じ、ifstreamでもう一度開くことができます整数を表示しますか?回答ありがとうございます。 – Jorge

答えて

1

固定する必要がありますされているいくつかの事があります:あなたはstd::ios::in and out

第二の問題を行う必要があり、なぜ

in.open("op.txt",std::ios::in | std::ios::out | std::ios::app); 

hereがある。ここ

プログラムがありますあなたが読んだポインタの位置に問題があると述べたように、ファイルからの書き込みと読み取りを切り替えるときです

in.seekg(0, std::ios::beg);//before the while loop; 

これは、プログラムが最初からファイルを読み取れるように、読み取り位置を0に設定します。 here

+0

さて、最終的に動作します、ありがとうございました。私はstd :: ios :: inと:: outがすでに "fstream"に入っていると思っていました。ありがとう。 – Jorge