Как создать текстовый файл в папке на рабочем столе
У меня проблема в моем проекте. На моем рабочем столе есть папка проекта. Я хочу создать текстовый файл и написать что-нибудь включить этот текстовый файл. Это мой код:
ofstream example("/Users/sample/Desktop/save.txt");
Но я хочу, чтобы он мог запустить другой Mac. Я не знаю, что я должен написать адрес для save.txt.
Может кто-нибудь мне помочь?
3 ответа
Создать файл и написать текст просто, вот пример кода:
#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 как часть вашей конфигурации компиляции), и, таким образом, сам ваш код остается более независимым от платформы.
Альтернатива - найти библиотеку управления сохранением данных, которая уже разработана для переноса на разные платформы. Будь то C или C++ или какая-либо бинарно-совместимая библиотека, тогда уже не имеет значения.
Только не ожидайте, что это будет частью C++ (языка).
Если вы хотите, чтобы ваша программа работала на разных платформах, вам лучше использовать относительный путь. например. "./output.txt", или лучше" GetSystemDirectory() ", чтобы получить системный каталог для создания файла, а затем вы можете записать или прочитать файл с тем же путем.