С++ Создать файл в пользовательском каталоге

Я хочу создать файл с именем «Control.h» на рабочем столе/(указанная пользователем папка) и написать в него текст. Как мне это сделать? (для Mac)......... Это то, что у меня есть до сих пор:

#include <iostream>
#include <fstream>
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

int main ()
{
    char game_name [100];
        cout << "Game Name: ";
        cin >> game_name;

        const char* homeDir = getenv ("HOME");
        char final [256];
        sprintf (final, "%s/Desktop/%s",homeDir, game_name);
        mkdir(final,0775);

person user3316925    schedule 16.02.2014    source источник
comment
в этом я спрашивал, как заставить его перейти на рабочий стол. Теперь я спрашиваю, как создать папку в Desktop/givenName и создать в ней файлы с именем   -  person user3316925    schedule 17.02.2014


Ответы (1)


std::ofstream out(std::string(final)+"/Control.h");
// ...
out << mytext; // write to stream
// ...
out.close();

Почему вы используете строки const char* с cin? Либо используйте cin::getline, либо используйте std::string, чтобы избежать переполнения буфера. Кроме того, использование sprintf также опасно. Лучшее решение:

#include <string>
// ...
{
    std::string game_name [100];
    cout << "Game Name: ";
    cin >> game_name;

    std::string homeDir = getenv ("HOME");
    std::string final=homeDir+"/Desktop/"+game_name;
    mkdir(final.c_str(),0775);
person kirbyfan64sos    schedule 16.02.2014