2015-06-03 2 views
0

Я работаю с Xcode, и у меня возникают проблемы с открытием потока файлов для назначения переменных из текстового файла. Я предполагаю, что размещение txt-файла в том же каталоге, что и проект, позволит мне открыть поток без включения всего каталога. Я немного возился с этим, но безрезультатно я могу заставить его работать правильно. Я считаю, что мне удалось прочитать данные в какой-то момент, но я думаю, что строка была напечатана в unicode (не уверен). Это очень простая программа. Я бы подумал, что это сработает. Я думаю, что моя проблема связана с каталогом, в котором находится пример, и тем, как Xcode работает с файлами проекта. Я просто поместил файл примера в папку проекта и надеялся, что он сработает.невозможно открыть поток файлов C++

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

using namespace std; 
int main() 
{ 
    string name; 
    ifstream infile; 
    infile.open("example.txt"); 
    if(infile.is_open()) 
    { 
     infile >> name; 
    } 
    else 
     cout << "Unable to open file"; 

    cout << name; 
    return 0; 
} 
+2

Работает ли он с абсолютным путем? – Borgleader

+0

Я этого не пробовал. хотя это немного, но я не знаю, как это сделать на Mac. Недавно я получил этот компьютер, и я пока не очень люблю Xcode. – TEddyBEaR

+3

Как вы управляете программой? Поскольку у вас нет пути, указанного в файле, он проверяет ваш текущий рабочий каталог, который не гарантированно находится там, где находится программа. –

ответ

3

Прежде всего, помните, что рабочий каталог не всегда является тем же самым каталогом, в котором находится двоичный файл программы.

Изменение:

infile.open("example.txt"); 

к:

infile.open("/full/path/to/program/directory/example.txt"); 

где /full/path/to/program/directory/ является расположение папки, где программа (и, таким образом, example.txt файл) помещается. Это должно решить проблему.


Кстати, вы также можете читать this question, что адреса, очень похожую проблему.

Кроме того, читайте о getcwd() function.

+0

не уверен, как набирать полный путь к папке на mac (новый для apple). «/desktop/practice/example.txt» не работает. – TEddyBEaR

+0

Do "~/Desktop/practice/example.txt" – erip

+0

Работает. Полное имя пути было на стороне программы. – TEddyBEaR

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