2017-10-09 29 views
0

"mydata.txt"というファイルの中に(x、y)の値を表示することになっています。しかし、何らかの理由で私は次のエラーメッセージが表示されます。 "エラー:出力ファイルmydata.txtを開くことができません"プログラムがテキストファイルを作成するはずか、ファイルを作成するはずです。私は後者を試しましたが、それはまだ動作しませんでした。ここに私のコードは次のとおりです。私はそれを実行したときにストリームを使ってファイルを書き込む

#include "std_lib_facilities_5.h" 

class Point{ 
    public: 

    int x; 
    int y; 

    // Coordinate members x and y 
    Point(int nn = 0 , int mm = 0): x(nn), y(mm){} 
    friend ostream& operator<< (ostream &out, const Point &point); 
}; 

ostream& operator<<(ostream& os, const Point& point){ 
    os << point.x << " " << point.y; 
    return os; 
} 

int main() 
try { 
    int x1, x2; 
    vector<Point> original_points; 

    for(int i = 0; i < 7; ++i) { 
     cout << "Please input coordinate points as (x,y): "; 
     cin >> x1 >> x2; 
     original_points.push_back(Point(x1,x2)); 
    } 
    for(int i = 0; i < 7; ++i){ 
     cout << "Original points: " << original_points[i] << endl; 
    } 
    string outputFile = "mydata.txt"; 
    ofstream ost {"mydata.txt"}; 
    ost.open(outputFile,ofstream::out); 
    if(!ost) error("can't open output file ", outputFile); 

    for(int i = 0; i < original_points.size(); ++i){ 
     ost << original_points[i] << " " << original_points[i]; 
    } 
    ost.close(); 
} 
catch (exception& e) { 
    cerr << "error: " <<e.what() << '\n'; 
    return 1; 
    } 
    catch (...) { 
     cerr << "Oops: unknown exception!\n"; 
     return 2; 
    } 

そして、ここでは、出力されます。

Please input coordinate points as (x,y): 1 2 
Please input coordinate points as (x,y): 1 1 
Please input coordinate points as (x,y): 2 2 
Please input coordinate points as (x,y): 3 3 
Please input coordinate points as (x,y): 4 4 
Please input coordinate points as (x,y): 5 5 
Please input coordinate points as (x,y): 6 6 
Original points: 1 2 
Original points: 1 1 
Original points: 2 2 
Original points: 3 3 
Original points: 4 4 
Original points: 5 5 
Original points: 6 6 
error: can't open output file mydata.txt 
Program ended with exit code: 1 
+0

はい私はそれをしました。 "mydata.txt"という名前のファイルを作成して同じフォルダに入れます –

+0

@ scohe001別途指定しない限り、出力ファイルストリームを開くとファイルが作成されます。 – molbdnilo

答えて

0

この

#include "std_lib_facilities_5.h" 

class Point{ 
    public: 

    int x; 
    int y; 

    // Coordinate members x and y 
    Point(int nn = 0 , int mm = 0): x(nn), y(mm){} 
    friend ostream& operator<< (ostream &out, const Point &point); 
}; 

ostream& operator<<(ostream& os, const Point& point){ 
    os << point.x << " " << point.y; 
    return os; 
} 

int main() 
try { 
    int x1, x2; 
    vector<Point> original_points; 

    for(int i = 0; i < 7; ++i) { 
     cout << "Please input coordinate points as (x,y): "; 
     cin >> x1 >> x2; 
     original_points.push_back(Point(x1,x2)); 
    } 
    for(int i = 0; i < 7; ++i){ 
     cout << "Original points: " << original_points[i] << endl; 
    } 
    ofstream ost; 
    ost.open("mydata.txt"); 

    if(!ost) error("can't open output file ", "mydata.txt"); 

    for(int i = 0; i < original_points.size(); ++i){ 
     ost << original_points[i] << " " << original_points[i]; 
    } 
    ost.close(); 
} 
catch (exception& e) { 
    cerr << "error: " <<e.what() << '\n'; 
    return 1; 
    } 
    catch (...) { 
     cerr << "Oops: unknown exception!\n"; 
     return 2; 
    } 
+0

違いを推測するのか、変更したのか説明できますか? –

+0

エラーはありませんが、ファイルを作成しません。 –

+0

ファイルを開くコードを実行してダミーメッセージを書き込んでみてください。次に、ファイルを閉じます。 – Chris

1

ofstream ost {"mydata.txt"};がファイルを開く試してみてください。

そして、次の行でもう一度開こうとすると、既に開いているので、失敗します。
2行目を削除します。あなたはそれでいる間

はラインost.close();を削除する - それは時間だときデストラクタはあなたのためにそれを閉じます。

+0

まだファイルを作成していません。私はちょうどそれを作って同じディレクトリに入れてください。 –

+0

@ PapesTraoreあなたのプログラムはエラーを出力するか、見つけられないのでこれを知っていますか?このファイルは、プログラムの*作業ディレクトリ*に作成する必要があります。また、通常はソースコードのないIDEを使用している場合もあります。 – molbdnilo

+0

見つからず、.cppファイルを意味しますか?私はXcodeを使用していますが、私は宿題のためのフォルダを持っています。 –

関連する問題