0

プログラムが読み取れる銀行口座ファイルがあります。この関数は現在、ifstream を使用して動作します。しかし、プログラムでテキスト ファイルの 6 行目 (「balance」という値を持つ) を読み取り、必要に応じて更新する (削除して新しい値に置き換える) 必要があります。

for ループを使用して、行のトラバースを見つけました。しかし、必要に応じて更新するにはどうすればよいですか? (出金・入金で残高更新)

これは私が今持っているコードです:

ifstream file;
string line;
file.open ("accounts.txt", ios::in); 

for(int i = 0; i < 6; ++i)    //6 being the 6th line
      {
         getline(file, line);
      }

次は何が来るの?ありがとう :)

4

1 に答える 1

2

あなたが言及したようにファイルが非常に小さい場合は、それを文字列の配列に入れることができます (テキストの行ごとに 1 つの要素)。次に、配列に変更を加え、配列全体をファイルに書き直します。

たとえば、次のように arrya に読み込むことができます。

//assuming you've defined the array A
for(int i = 0; i < 6; i++)    //NOTE: I've changed the loop counter i
      {
         getline(file, line);
         A[i] = line;
         cout << A[i] < "\n"; //This is the NEW LINE I wanted you to put
         //If the ABOVE line gives nothing, you ought to check your TXT file.
      }
//Change line 6
A[5] = "555.00";
//Now reopen the file to write
ofstream Account ("accounts.txt");
if (Account.is_open())
  {
    for(i=0;i<6;i++)
       {//NOTE THAT I HAVE INCLUDED BRACES HERE in case you're missing something.
        Account << A[i] << "\n"; //Loop through the array and write to file
       }
    Account.close();
  }

私はこれをテストしていませんが、大丈夫だと思います。その他のコード: メイン コードの最後に次のコードを追加すると、配列の内容が表示されます。これで何も表示されない場合は、ファイルが空であることを明確に意味します。

for(int i = 0; i < 6; i++)
   {
    cout << A[i] < " This is a row with data\n";
   }

注: 私はこのフォーラムの問題を明確にするためにあなたを助けたいと思っていますが、この質問はこのフォーラムの性質を超えていると思います. おそらく、必要なのは、ループやその他の構造の芸術を学ぶことに時間を費やすことです:)

于 2013-05-25T11:40:45.300 に答える