2012-01-23 6 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 файл. Если вы запустите программу, когда она говорит, что файл не существует. Запуск второй раз говорит, что файл уже существует, и если вы хотите его перезаписать. Дело в поиске моего Mac. Я не могу найти этот файл нигде.

Любые идеи, что я делаю неправильно, запустив его в Xcode? Друг запускает тот же самый код в Visual Studio 2008, и он работает. Любая помощь приветствуется.

+0

У вас есть достаточные разрешения для создания файла? –

+0

Xcode не является идеальной средой для разработки только на C++. Гибридный 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()) // shouldn; t этот тест должен быть на outFile – Mark

ответ

2

Вам необходимо установить рабочий каталог для исполняемого файла, так как вы считаете, что ваши файлы данных находятся в текущем рабочем каталоге. В Xcode 3.x вы установите это на первой вкладке Get Info для исполняемого файла. В Xcode 4.x он был перемещен, но принцип тот же.

В качестве альтернативы вы можете изменить пути к файлам данных (например, сделать их абсолютными), чтобы вы не делали предположений о текущем рабочем каталоге.

0

Возможно, у вас нет разрешения на запись в каталог, в котором вы также пытаетесь сохранить файл.

Кроме того, в вашей программе есть ошибка, и я уверен, что она существует для отладки. У вас есть

outFile.close(); 
    exit(1); 

Но затем вскоре после того, как вы попытаетесь записать файл, затем закройте его снова.

+0

да это для целей отладки. Как получить правильные разрешения в Xcode, чтобы это сработало? – Dani

+0

Возможно, вам нужно установить рабочий каталог, как объясняется в сообщении Paul R. Я предлагаю взглянуть на это – josephthomas

Смежные вопросы