2011-06-25 80 views
3

我的項目中存在問題。我的桌面上有一個項目文件夾。我想創建一個文本文件並寫入包含此文本文件的內容。這是我的代碼:如何在桌面上的文件夾中創建文本文件

ofstream example("/Users/sample/Desktop/save.txt");

但我想這可能是運行另一臺Mac。我不知道我應該爲save.txt寫地址。

任何人都可以幫助我嗎?

+2

所以,你想要「正確的方式」獲取桌面的路徑,正確嗎? –

回答

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); 
+0

基於「但是我希望它可以運行其他mac.ı不知道什麼我應該爲save.txt寫地址任何人都可以幫我嗎?」我認爲OP知道如何寫入文本文件,並希望以便攜的方式獲取桌面路徑。 – Xeo

+0

@Xeo:什麼是「便攜式桌面」? :-) –

+0

@Kerrek:我在哪裏可以談論便攜式桌面? - 「獲取桌面路徑的便攜方式」 – Xeo

0

定義應保存文件的規則因平臺而異。一種選擇是讓它成爲編譯腳本的一部分(就是你將#define SAVEGAME_PATH作爲編譯配置的一部分),因此你的代碼本身仍然是更加平臺無關的。

另一種方法是找到一個已經設計爲跨不同平臺移植的save-data-management庫。無論是C或C++還是其他二進制互操作庫,都不再重要。

只是不要指望成爲C++(語言)的一部分。

-1

如果您希望程序跨平臺運行,最好使用 相對路徑。 例如。 「./output.txt」或更好的「GetSystemDirectory()」來獲取系統 目錄來創建一個文件,然後你可以使用相同的路徑寫入或讀取文件 ..

相關問題