2012-01-23 22 views
0

私は次のプログラムを実行しようとしています:どのように入力ファイルと出力ファイルを読み書きする

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() 
{ 
    ifstream inFile; 
    ofstream outFile; 
    double first=1.49, second=2.59, third=3.69, fourth=4.79; 
    inFile.open("prices.txt"); 
    char response; 
    if(!inFile.fail()) 
    { 
     cout << "A file by the name prices.txt exists.\n" << "Do you want to continue and overwrite it\n" << " with the new data (y or n);"; cin >> response; 
     if(tolower(response) == 'n') 
     { 
      cout << "The existing file will not be overwritten." << endl; 
      return -1; 

     } 
    } 
    outFile.open("prices.txt"); 
    if (inFile.fail()) 
    { 
     cout << "\n The file does not exist and can not be opened" << endl; 
     cout << "The file has been successfully opened for output." << endl; 
     outFile << first << "\n" << second << "\n" << fourth << "\n" << endl; 
     outFile.close(); 
     exit(1); 
     cout << "The file has been successfully opened for output. " << endl; 
     outFile << first << "\n" << second << "\n" << third << "\n" << fourth << endl; 
     outFile.close(); 
     return 0; 
    } 
} 

はまだありません。このプログラムはprices.txtファイルに値を書き込みません。一度プログラムを実行すると、ファイルが存在しないと表示されます。それを2回目に実行すると、ファイルがすでに存在していて、上書きするかどうかが示されます。私のMacを検索しているうちに、どこにでもこのファイルが見つかりません。

私はXcodeでそれを実行すると間違って何をしていますか?友人はVisual Studio 2008で全く同じコードを実行しています。どんな助けもありがとうございます。

+0

ファイルを書き込むための十分な権限がありますか? –

+0

Xcodeは単なるC++開発の理想的なIDEではありません。ハイブリッドC++/Objective-Cは十分ですが、まっすぐなC++プログラムを作成している場合は、クロスプラットフォームのIDE(例えば、[Code :: Blocks'](http://www.codeblocks .org/downloads/26#mac)または['NetBeans'](http://netbeans.org/downloads/index.html)を参照してください)。これはまた、誰もが同じIDEを使用している場合、あなたが持っているもののようなクロスプラットフォーム開発の問題のトラブルシューティングに役立ちます! – darvids0n

+0

re outFile.open( "prices.txt"); if(inFile.fail())//このテストをoutFileにする必要があります – Mark

答えて

2

データファイルが現在の作業ディレクトリにあると仮定しているため、実行可能ファイルの作業ディレクトリを設定する必要があります。 Xcode 3.xでは、実行可能ファイルの最初のタブでGet Infoを設定します。 Xcode 4.xでは移動されましたが、原則は同じです。

また、現在の作業ディレクトリについて仮定しないように、データファイルのパスを変更することもできます(絶対パスなど)。

0

ファイルを保存しようとしているディレクトリに書き込む権限がない場合もあります。

また、プログラムにエラーがあり、デバッグのためにそこにあると確信しています。あなたは

outFile.close(); 
    exit(1); 

を持っている。しかし、その後まもなくそこにあなたは再びそれを閉じ、ファイルへの書き込みしようとした後。

+0

はいデバッグのためです。これがうまくいくようにXcodeで正しいアクセス権を取得するにはどうすればよいですか? – Dani

+0

Paul Rのポストで説明されているように、作業ディレクトリを設定する必要があるかもしれません。私はそれを見てみることをお勧めします – josephthomas

関連する問題