Существует у меня функция, которая создает лог.
Как бы я не крутился - файл создается в папке, где запустили программу.
Я решил пойти другим путём, как при запуске .exe заставить работать программу в другой папке?
MVS компилирует мой проект в папку Debug, там и находится .exe, но логи появляются в папке с исходным кодом.
Вот на всякий случай функция создания лога:
void CreateLogFile()
{
ifstream logg;
logg.open("latest.txt");//Открываем старый файл лога - latest.txt
if (bla.is_open())//Если файл существует
{
string date;
logg >> date;//В первой строке записана дата.
date = date + ".txt";
logg.close();
const char * newfilename = date.c_str();
rename("latest.txt", newfilename);//Переименовываем файл в [date].txt
}
logg.close();
string asdlog = "[" + getTime(1) + "." + getTime(0) + "_" + getTime(2) + "-" + getTime(3) + "-" + getTime(4) + "]";
//getTime обрабатывает и возвращает время
asdlog += '\r';
asdlog += '\n';//По другому не работает перенос строки.
ofstream lg;
lg.open("latest.txt");
lg << asdlog;//Записываем на первую строку дату.
lg.close();
}
Выглядит это так: http://snap.ashampoo.com/JsChUMDW
Лог выглядит так: http://snap.ashampoo.com/VvT8IsWE
Если я правильно понял вашу проблему , то вам нужно сохранить log программы не в той папке , где находиться ваш .exe, а в какой - то другой вам просто нужно показать этот путь или относительно вашей папке , или относительно системы
logg.open("\log/latest.txt");
logg.open("C:\\mylog\\latest.txt");
При этом папка должна быть созданной.
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream wr;//ofstream я выбрал для того , чтобы при отсутствии файла он создался
/*wr.open("\log/latest.txt");*/ //или так
wr.open("C:\\log\\new.txt" , ios::app);//используем для записи в файл флаг app(append) то есть дописываем в конец
wr << "Some content\n";
wr.close();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей