在iOS上用std编写文件

时间:2011-05-26 20:37:23

标签: iphone c++ ios file stl

我在xCode中为我的iPhone资源添加了一个save.txt,文本相同“......”

我给文件写了一些字符串,而不是读它,但是当我读它时,我只得到旧的内容..所以没有新的内容写入其中

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 个答案:

答案 0 :(得分:12)

您无法在应用程序包中编写或修改文件,file.open()调用肯定会失败,但您不会检查错误。相反,您应该写入应用程序的Documents文件夹。

根据您的代码示例,即:

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

NSString *documentsPath = [searchPaths objectAtIndex:0];

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

答案 1 :(得分:1)

写作时永远不会检查错误。事实上,你没有写入该文件和错误代码,如果选中,可能会告诉你更多关于错误的信息而不是我的回答。