Почему я не могу использовать путь Windows Environment с ofstream для написания текстового файла?

Почему я не могу использовать ярлык пути Windows Environment с ofstream, чтобы написать образец текстового файла?

    \\ C:\Users\Me\AppData\Local\Temp\Test.txt

    std::string Path = "%Temp%\\Test.txt"

    ofstream myfile;
    myfile.open (Path);
    if (!myfile.is_open())
    {
     cout << "Could not create temp file." << endl;
    }
    myfile << "Hello World";
    myfile.close();

myfile.is_open () всегда возвращает false, также "%% Temp %%" и "\%Temp\%" не работают.

Я могу получить Temp путь с помощью Windows API, но я не хочу использовать API в этом приложении.

Спасибо

1 ответ

Решение

%Temp% замена - это то, что делается некоторыми программами Windows, а не средой выполнения C++. Если вы хотите сделать это, просто извлеките переменную среды самостоятельно и создайте путь. Нечто подобное сделает это, но вы захотите добавить проверку ошибок:

ostringstream tempfilepath;
tempfilepath << getenv("Temp") << '/' << "Test.txt";
ostream myFile;
myFile.open(tempfilepath.str());
...etc...
Другие вопросы по тегам