Написание файлов с помощью std на iOS - PullRequest
3 голосов
/ 27 мая 2011

Я добавил save.txt на свой ресурс iPhone в xCode с тем же текстом "..."

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

NSString* resources = [ [ NSBundle mainBundle ] resourcePath ] ;    

std::string respath( [ resources UTF8String ] ) ;

std::string fpath = respath + "/" + "save.txt" ;


std::ofstream file;

file.open(fpath.c_str(), std::ios::out );


file << "some text\n";

file.close();


std::ifstream rf;

rf.open(fpath.c_str(), std::ios::in );

char str[255];
while(rf) {
    rf.getline(str, 255);  

    if(rf) printf("%s", str);

}   

Ответы [ 2 ]

12 голосов
/ 27 мая 2011

Вы не можете записывать или изменять файлы внутри пакета приложения, этот вызов file.open (), безусловно, не выполняется, но вы не проверяете ошибки. Вместо этого вы должны написать в папку «Документы» для вашего приложения.

Для вашего примера кода это будет:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                       NSUserDomainMask, YES);

NSString *documentsPath = [searchPaths objectAtIndex:0];

std::string respath( [ documentsPath UTF8String ] ) ;
1 голос
/ 27 мая 2011

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

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