我的項目中存在問題。我的桌面上有一個項目文件夾。我想創建一個文本文件並寫入包含此文本文件的內容。這是我的代碼:如何在桌面上的文件夾中創建文本文件
ofstream example("/Users/sample/Desktop/save.txt");
但我想這可能是運行另一臺Mac。我不知道我應該爲save.txt寫地址。
任何人都可以幫助我嗎?
我的項目中存在問題。我的桌面上有一個項目文件夾。我想創建一個文本文件並寫入包含此文本文件的內容。這是我的代碼:如何在桌面上的文件夾中創建文本文件
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);
定義應保存文件的規則因平臺而異。一種選擇是讓它成爲編譯腳本的一部分(就是你將#define SAVEGAME_PATH作爲編譯配置的一部分),因此你的代碼本身仍然是更加平臺無關的。
另一種方法是找到一個已經設計爲跨不同平臺移植的save-data-management庫。無論是C或C++還是其他二進制互操作庫,都不再重要。
只是不要指望成爲C++(語言)的一部分。
如果您希望程序跨平臺運行,最好使用 相對路徑。 例如。 「./output.txt」或更好的「GetSystemDirectory()」來獲取系統 目錄來創建一個文件,然後你可以使用相同的路徑寫入或讀取文件 ..
所以,你想要「正確的方式」獲取桌面的路徑,正確嗎? –