2016-04-04 14 views
1

私は現在このコードを持っており、すべての書式設定は正しいです...私は出力テキストファイルに行を作成するようには思えません...どうすればいいですか?私は関数とmain()でforループを実行しようとしましたが、それを行うとうまくいかないようですので、今は非常に混乱しています。あなたはそれが切り捨てられ、新しいファイルを作成し、書き込み時はいつでもあなたのファイルを追加していない出力ファイルに行を作成するにはどうすればよいですか?

#include <iostream> 
#include <string> 
#include <fstream> 
#include <iomanip> 

using namespace std; 

void output(string flightnumber, int arrival1, int arrival2, int realarrival1, int realarrival2, char dummy1, char dummy2) 
{ 
    ofstream flight; 
    flight.open("flightdata.dat"); 

    if (flight.fail()) 
    { 
     cout << "Error..." << endl; 
     exit(1); 
    } 

    cout << "Enter the flight number: "; 
    cin >> flightnumber; 

    if (flightnumber == "end") 
    { 
     exit(1); 
    } 

    flight << flightnumber << setw(4); 

    cout << "Enter the scheduled/actual arrival times (hh:mm hh:mm):"; 

    cin >> arrival1 >> dummy1 >> arrival2 >> realarrival1 >> dummy2 >> realarrival2; 
    flight << arrival1 << dummy1 << arrival2 << setw(4) << realarrival1 << dummy2 << realarrival2; 
    flight << ('\n'); 
} 

int main() 
{ 
    string flightnumber; 
    int arrival1, arrival2, realarrival1, realarrival2; 
    char dummy1, dummy2; 

    output(flightnumber, arrival1, arrival2, realarrival1, realarrival2, dummy1, dummy2); 

    return 0; 
} 
+0

"うまくいかないようです"というのは有用な問題の説明ではありません。 –

+0

すべてのエディタが1行の改行を改行として扱うわけではありません。メモ帳のようなものは、キャリッジリターン '\ r'と改行文字を見たいと思うでしょう。 – Pemdas

答えて

1

mainに初期化されていない変数を使用しています。彼らはとにかくそこに目的を果たさない。 mainから変数の宣言を削除し、outputに入れ:

void output() 
{ 
    string flightnumber; 
    int arrival1, arrival2, realarrival1, realarrival2; 
    char dummy1, dummy2; 

    ofstream flight; 
    flight.open("c:\\test\\___flightdata.txt", ios::app); 
    ... 
} 

int main() 
{ 
    output(); 
    return 0; 
} 

あなたは他の回答で指摘したようios::appフラグを追加することもできます。

2

、フラグを追加し、追加として、あなたのファイルを開きます。

flight.open("flightdata.dat", ios_base::app);