XCode 7 - fstream 在 iPhone 模拟器中不工作
XCode 7 - fstream does not work in iPhone simulator
下面显示的函数在 Xcode 中运行良好,只要我在 OSX-应用程序中使用它们...
现在我写了一个 iOS-application,我想在其中保存一些数据在 .txt 文件中并再次读取它们,但是它不起作用......既没有文件写入,也没有读取......
我已经在网上搜索了解决方案,但我只找到了它在 OSX 应用程序(错误的目录等)中不起作用时的解决方案,但这不是我的情况,我已经让它工作了.. .
我在 iOS 模拟器中使用它有什么区别以及如何在 运行 那里得到它?
//下面的代码现在是更正后的版本(在发布之前没有 "this was missing" 部分。
void SaveData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ofstream FileOut (FileName);
if (FileOut.is_open())
{
//!!write data to file
FileOut.close();
}
}
void LoadData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ifstream FileIn;
FileIn.open(FileName.c_str(), std::ios::in);
if(not FileIn.good())
{
//!!error message
return;
}
//!!read data from file
FileIn.close();
}
您需要将文件保存到应用程序的 Documents
文件夹中。有关它的更多信息,请阅读 this answer.
iOS 被沙盒化并限制了可以读写的区域,users/me/documents/xcodeprojects
是不正确的。
您可以编写多个目录,Documents 目录可能就是您想要的目录。您必须调用以获取路径,这里是 C++ 中的示例调用,Objective-C 和 Swift:
C++(致谢:Moritz Buchty):
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
对象:
NSArray *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
Swift:
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
下面显示的函数在 Xcode 中运行良好,只要我在 OSX-应用程序中使用它们... 现在我写了一个 iOS-application,我想在其中保存一些数据在 .txt 文件中并再次读取它们,但是它不起作用......既没有文件写入,也没有读取...... 我已经在网上搜索了解决方案,但我只找到了它在 OSX 应用程序(错误的目录等)中不起作用时的解决方案,但这不是我的情况,我已经让它工作了.. .
我在 iOS 模拟器中使用它有什么区别以及如何在 运行 那里得到它?
//下面的代码现在是更正后的版本(在发布之前没有 "this was missing" 部分。
void SaveData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ofstream FileOut (FileName);
if (FileOut.is_open())
{
//!!write data to file
FileOut.close();
}
}
void LoadData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ifstream FileIn;
FileIn.open(FileName.c_str(), std::ios::in);
if(not FileIn.good())
{
//!!error message
return;
}
//!!read data from file
FileIn.close();
}
您需要将文件保存到应用程序的 Documents
文件夹中。有关它的更多信息,请阅读 this answer.
iOS 被沙盒化并限制了可以读写的区域,users/me/documents/xcodeprojects
是不正确的。
您可以编写多个目录,Documents 目录可能就是您想要的目录。您必须调用以获取路径,这里是 C++ 中的示例调用,Objective-C 和 Swift:
C++(致谢:Moritz Buchty):
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
对象:
NSArray *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
Swift:
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String