我的项目有问题。我的桌面上有一个项目文件夹。我想创建一个文本文件并写一些包含这个文本文件的东西。那是我的代码:
ofstream example("/Users/sample/Desktop/save.txt");
但我想它可以运行其他mac。我不知道我应该为 save.txt 写什么地址。
谁能帮我?
创建一个文件并向其中写入一些文本很简单,这是一个示例代码:
#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);
定义 where-you-should-save-file 的规则因平台而异。一种选择是将其作为编译脚本的一部分(即您将 #define SAVEGAME_PATH 作为编译配置的一部分),因此您的代码本身与平台无关。
另一种方法是找到一个已经设计为跨不同平台移植的保存数据管理库。无论是 C 或 C++ 还是任何二进制互操作库都不再重要。
只是不要期望它会成为 C++(语言)的一部分。
如果你想让你的程序跨平台运行,你最好使用相对路径。例如。“./output.txt”,或者更好的“GetSystemDirectory()”获取系统目录来创建文件,然后你可以用相同的路径写入或读取文件。