2016-10-25 4 views
0
ofstream batch; 
batch.open("olustur.bat", ios::out); 
batch <<"@echo off\n"; 
batch.close(); 
system("olustur.bat"); 

Я хочу создать файл olustur.bat в папке временного файла Windows. Я не мог этого добиться. Я новичок в C++, так ли это возможно? Если да, то как?Ostream создать файл в справочном каталоге Windows

+0

Обычно в 'C: \ Users \ \ AppData \ Local \ Temp' – erip

+0

Да, но это будет работать только для моего компьютера. –

+0

Temp также хранится в '% TEMP%'. В зависимости от того, как вы компилируете свой C++, вы можете использовать 'std :: getenv' или' GetEnvironmentVariable'. – erip

ответ

2

Вы можете использовать функцию Win32 API GetTempPath(), чтобы получить полный путь к папке temp, а затем используйте std::ofstream для записи файлов на нее.

#include <iostream> 
#include <windows.h> 
#include <string> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    CHAR czTempPath[MAX_PATH] = {0}; 
    GetTempPathA(MAX_PATH, czTempPath); // retrieving temp path 
    cout << czTempPath << endl; 

    string sPath = czTempPath; 
    sPath += "olustur.bat"; // adding my file.bat 

    ofstream batch; 
    batch.open(sPath.c_str()); 
    batch << "@echo off\n"; 
    batch.close(); 

    system(sPath.c_str()); 

    return 0; 
} 
+0

На самом деле моя проблема заключается в том, чтобы получить его здесь 'batch.open ("olustur.bat", ios :: out); –

+0

@ RıdvanÇetin Похоже, вам нужно узнать, как конкатенировать строки. – erip

Смежные вопросы