2014-02-03 3 views
1

C++ В моей программе C++, я спасаю выходные данные в файл с помощью Sprintf и fstream так же, как нижеНаписать имя файла с помощью sstream и fstream в

#include <iostream> 
#include <fstream> 

char outname[50]; 
int n = 100; 
sprintf(outname, "output_%s_%d.dat", "file", n); 

ofstream fout;  
fout.open(outname); 

Как я могу получить имя файла, используя зЬй :: sstring вместо sprintf и открыть этот файл с помощью std :: ofstream? В приведенном выше имени файла кода находится имя outname, которое открывается с помощью std :: ofstream.

+0

Можете ли вы прояснить это? Вы хотите, чтобы имя * сгенерировано * с помощью 'std :: ostringstream' или имя *, записанное в файл * (как в имени используется для * открытия *, файл * и * записывается * в * файл как первые данные)? Я спрашиваю, потому что код, который у вас есть * сейчас *, не «пишет outname в fout», независимо от механики, используемой для его создания. – WhozCraig

+0

Да, я хочу сгенерировать имя файла, используя std :: ostringstream вместо sprintf, и открыть этот файл с помощью std :: ofstream. – ADK

+0

, но не записывать имя файла * в * файл * содержимое *, правильно? Это был выбор народного («... написать« outname »в« fout »...»), что смутило меня. – WhozCraig

ответ

4

может быть что-то вроде этого?

#include <sstream> 

std::stringstream outname; 

outname << "output_file_" << n << ".dat"; 
... 
ofstream fout; 
fout.open(outname.str().c_str()); 
+0

он называется c_str(), обратите внимание на подчеркивание, но он думает, что streamstream может напрямую взять std :: string, см. Выше. –

+0

Спасибо, теперь он работает с c_str(). Без использования c_str() это дает мне ошибку. Я попробовал то же самое до публикации вопроса. – ADK

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