2013-02-19 7 views
0

Я пытаюсь читать из файла и писать в файл при разработке приложения Windows Phone 8 на родном C++.Windows Phone 8 fstream

Для чтения файла я использую:

ifstream inputFile; 
inputFile.open(fileName); 

string text; 
while(!inputFile.eof()) 
{ 
    string line; 
    getline(inputFile, line); 
    text += line; 
} 

, который работает perfeclty штраф. Но запись в файл не работает независимо от того, что я пытаюсь. Например:

ofstream outputFile; 
outputFile.open("test.txt", ios::out); 
outputFile << "asd" << endl; 
outputFile.close(); 

не даже создать этот файл. Если я пытаюсь использовать тот же файл, который я использовал для чтения ввода, он тоже не работает. Я также попытался создать пустой файл и использовать его без успеха.

У кого-нибудь есть идея, что я делаю неправильно?

+2

Во-первых, вы можете просто выполнить 'outstream outputFile (" test.txt ", ios :: out);' Я понятия не имею, почему все, кажется, используют '.open' в первую очередь - нет необходимости явно закрывать: Посмотрите RAII. Во-вторых, есть ли у вас разрешение на запись в каталог, в котором вы находитесь? – 111111

+0

Действительно, когда я проверяю свойства каталога, проверяется «readonly»! Но это не позволит мне снять это. Как я могу предоставить этот файл для записи на запись? – Hannes

+0

У меня нет подсказки о телефоне Windows. Я предполагаю, что вы, возможно, не сможете изменить это по соображениям безопасности, узнайте, где должны храниться данные пользователя. – 111111

ответ

3

Вы можете прочитать любые файлы, которые развернуты на телефоне как часть установки приложения, но вам нужно найти абсолютный путь к этим файлам.

В C++ (на самом деле ++/расширение C CX) вы можете посмотреть на место установки вашего приложения с помощью:

auto appInstallDirectory = Windows::ApplicationModel::Package::Current->InstalledLocation->Path; 

Вы можете также чтение/запись в локальную папку вашего приложения в Windows Phone. Вы можете найти его здесь, используя:

Platform::String^ localfolder = Windows::Storage::ApplicationData::Current->LocalFolder->Path; 

Вам не разрешено читать/писать файлы за пределами этих мест.

+0

Я думаю, что вы пропустили меня. В этом конкретном случае я даже не хочу писать этот файл на телефоне, но только в папке проекта для тестирования. Это упрощает ситуацию? – Hannes

+0

А я вижу - но проблема очень похожа. Вы должны найти местоположение установленных файлов из своего проекта в файловой системе телефона. –

+0

Я не думаю, что это проблема, потому что я могу создать любой файл, скажем, в моем корневом каталоге и прочитать его с помощью моего fstream. Но, если я попытаюсь написать этот точный файл, это не сработает. Кажется, что это проблема с моим доступом к записи. Когда я проверяю свойства всех моих папок, он говорит (только для чтения), и я не могу это изменить. – Hannes