我的项目有问题。我的桌面上有一个项目文件夹。我想创建一个文本文件并写一些包含此文本文件的内容。那是我的代码:
ofstream example("/Users/sample/Desktop/save.txt");
但我希望它可以运行其他的mac。我不知道我应该为save.txt写些什么。
任何人都可以帮助我吗?
答案 0 :(得分:8)
创建一个文件并写一些文本很简单,这里有一个示例代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
std::ofstream o("/Users/sample/Desktop/save.txt");
o << "Hello, World\n" << std::endl;
return 0;
}
我希望能回答你的问题,但我不确定我是否理解你的问题,如果没有,请正确添加你想要实现的细节。
[更新]: 好吧,我想评论可以解决问题 您真正的问题是, 您希望将文件保存在正在玩游戏的用户的桌面上。因此,获取当前用户桌面的路径就是问题所在。
我不确定是否有可移植的方式来获取桌面路径,但可以通过以下方式完成:
在Windows中:
使用 SHGetSpecialFolderPath() 功能。
示例代码:
char saveLocation[MAX_PATH] = {0};
SHGetSpecialFolderPath(NULL, saveLocation, CSIDL_DESKTOPDIRECTORY, FALSE);
//Now saveLocation contains the path to the desktop
//Append your file name to it
strcat(saveLocation,"\\save.txt");
ofstream o(saveLocation);
在Linux中:
通过使用环境变量$ HOME
示例代码:
string path(getenv("HOME"));
path += "/Desktop/save.txt";
ofstream o(path);
答案 1 :(得分:0)
定义应该保存文件的规则因平台而异。一种选择是让它成为编译脚本的一部分(即你将#define SAVEGAME_PATH作为编译配置的一部分),因此你的代码本身仍然更加与平台无关。
另一种方法是找到一个已经设计为跨不同平台移植的存储数据管理库。无论是C或C ++还是其他二进制可互操作的库,都不再重要。
不要指望它成为C ++(语言)的一部分。
答案 2 :(得分:-1)
如果你希望你的程序跨平台运行,你最好使用 相对路径。 例如。 “./output.txt”,或者更好的“GetSystemDirectory()”来获取系统 目录创建一个文件,然后你可以写或读文件 路径相同..