Как создать текстовый файл в папке на рабочем столе - PullRequest
3 голосов
/ 25 июня 2011

У меня проблема в моем проекте. На моем рабочем столе есть папка проекта. Я хочу создать текстовый файл и написать что-нибудь включить этот текстовый файл. Это мой код:

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

Но я хочу, чтобы он мог запустить другой макинтош. Я не знаю, что мне написать адрес для save.txt.

Кто-нибудь может мне помочь?

Ответы [ 3 ]

8 голосов
/ 25 июня 2011

Создать файл и написать текст просто, вот пример кода:

   #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 голосов
/ 25 июня 2011

если вы хотите, чтобы ваша программа работала на платформе, вам лучше использовать относительный путь. например. «./output.txt", или лучше« GetSystemDirectory () »для получения системы каталог для создания файла, а затем вы можете написать или прочитать файл с тем же путем ..

0 голосов
/ 25 июня 2011

Правила, определяющие, где вы должны сохранить файл, различаются в зависимости от платформы. Один из вариантов - включить его в ваш скрипт компиляции (то есть вы #define SAVEGAME_PATH как часть вашей конфигурации компиляции), и, таким образом, сам ваш код остается более независимым от платформы.

Альтернатива - найти библиотеку управления сохранением данных, которая уже разработана для переноса на разные платформы. Будь то C, C ++ или какая-либо бинарно-совместимая библиотека - больше не имеет значения.

Только не ожидайте, что это будет часть C ++ (язык).

...