2013-04-27 6 views
0

Я хочу, чтобы выходной файл, чтобы иметь такое же имя, что и входной файл (с другим расширением) Например: Входной сигнал: packet_a.raw, выход: packet_a_data.txtимена файлов ввода/вывода

Я попытался сохранения FileName в строке, но ifstream и поток не принимают строку. Я пробовал использовать char [], но потом мне трудно изменить его.

+0

'std :: string' имеет' c_str() 'метод, который возвращает' char [] 'с содержимым строки. Обратите внимание, однако, что вы ** НЕ ДОЛЖНЫ ** изменять содержимое массива, возвращаемого 'c_str()'. –

ответ

0

Здесь библиотеки окупаются. Посмотрите на Boost filesystem library или на библиотеку платформы IDE (например, MFC).

0

Вы можете использовать char[], а затем изменить его на sprintf. Что-то вроде этого:

ofstream outFile_raw; 
ofstream outFile_txt; 
std::string data; 

std::string format_raw="raw"; 
std::string format_txt="txt"; 

char fileName[20]; 
sprintf(fileName, "..\\Packages\\packet_a.%s", format_raw); 

outFile_raw.open(fileName, ios::trunc); 

if(outFile_raw.is_open()) 
{ 
    outFile_raw<< data; // Write contents of the data to the file stream. 
    outFile_raw.close(); 
} 

sprintf(fileName, "..\\Packages\\packet_a.%s", format_txt); 

outFile_txt.open(fileName, ios::trunc); 

if(outFile_txt.is_open()) 
{ 
    outFile_txt<< data; // Write contents of the data to the file stream. 
    outFile_txt.close(); 
} 
Смежные вопросы