Невозможно получить доступ к файлам в коде C ++, встроенном в проект Objective-C - PullRequest
1 голос
/ 21 мая 2019

Я делаю проект в Xcode, и я пытался смешать логику, написанную на C ++, и обработку компонентов GUI в Objective-C. Я столкнулся со следующей проблемой:

Всякий раз, когда я открываю файловый поток в коде C ++ (как я обычно это делаю в проектах, полностью написанных на C ++, и он работает), файл не может быть открыт, и у меня нет сообщения об ошибке и понятия, как справиться с ситуацией , Следующий код лежит в методе моего класса C ++, в этом нет ничего плохого:

std::fstream file;

file.open("file");
if (file) {
    file << "The string that is not printed to a file";
}

file.close();

Что можно сделать, чтобы исправить файловые потоки и заставить их работать в проекте со смешанным кодом?

Примечание : вопрос не в том, чтобы обрабатывать C ++ и Objective-C в одном проекте, поскольку я могу успешно вызывать методы C ++ с помощью объекта-оболочки.

1 Ответ

1 голос
/ 21 мая 2019

Действительно, проблема возникает из-за того, что приложения Какао работают внутри своей собственной песочницы и по умолчанию не могут записывать или читать из любого файла за ее пределами.

Я решил проблему, предварительно создав файл и указавабсолютный путь к нему.Мне удалось выяснить путь к песочнице с помощью функции стандартной библиотеки getcwd() C:

char cwd[100];
std::string sandbox_path = getcwd(cwd, sizeof(cwd));

std::string full_path = sandbox_path + "/" + FILE_NAME;

std::fstream source_file;
source_file.open(full_path, std::ios::in | std::ios::out | std::ios::binary );

Спасибо тем, кто ответил!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...