2017-07-13 19 views
1
#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    fstream dataFile("data1.txt"); 
    if(dataFile.fail()) 
    { 
     cout<<"Unable to open file"<<endl; 
     exit(1); 
    } 
    double value = 0; 
    while(dataFile >> value) 
     cout<<"Read: "<< value << endl; 
    dataFile.close(); 
} 

このプログラムの出力は、常にファイルを開くことができません。 ファイルを作成できない理由を教えてください。 MacBook Pro(IED:コーデックナー2)を使用している場合は、その違いがあるかどうかわかりません私のfstreamがdata1.txtファイルを作成しないのはなぜですか?

+2

ファイル名に絶対パス名を使用してみてください。 – Barmar

+0

IDEが実行のために設定した現在のフォルダは、ユーザーが書き込み権限を持たないフォルダになります。 – drescherjm

+1

* "なぜファイルを作ることができないのか教えてください。" * 'fstream'をインスタンス化してもファイルは作成されません。 'ofstream'がファイルを作成します。この質問は少し不明です。 – wally

答えて

1

まずファイルの場所を確認する必要があります。たとえば、VS IDEからプログラムを実行する場合、テキストファイルをDebugフォルダまたはReleaseフォルダに配置しません。 IDEが実行可能ファイルを起動するフォルダの中にテキストファイルを配置します。スタンドアロンの実行可能ファイルを実行した場合、txtファイルは実行可能ファイルと同じフォルダに置かれます。 Fstream あなたが入力していないあなたの代わりにstd::ifstreamを使用することができ、出力のためのあなたのファイルを使用しているので:

std::ifstream dataFile("data1.txt"); 
+1

デフォルトは 'ios :: in | ios :: out' – Barmar

+0

@Barmar私は修正されました。私は関連情報で答えを更新しました。 – Ron

2

あなたのIDEによっては、プログラムは、あなたがそれだと思う場所で実行されていない可能性があります。テキストファイルをプロジェクト階層内の別の場所に配置してみてください。それは正しい場所にない可能性が高いです。

+0

'getcwd'は、IDEが使用している作業ディレクトリを決定するのにも役立ちます。 – user4581301

0

は、というファイルを作成するコードはありません。ファイルを作成するには


1)が正しいモードでstd::fstreamを使用してください)std::ofstream
2を使用してください。

必須ではありませんが、作成に役立つようにファイルにデータを書き込む必要があります。

あなたの投稿のコードはです。ファイルからと表示されています。あなたオープンファイル、オープンが成功しない可能性があります。プログラムにfstream(あいまいさを取り除くために)ファイルへのパスを伝えるようにしてください。

関連する問題