2015-07-25 6 views
0

Итак, я разрабатываю игру, в которой хранятся и читаются данные с текстовыми файлами. Но я должен быть в состоянии сделать это в повторяющемся стиле, так что имена текстовых файлов должны быть разными для каждого из них процедурно. Я решил, что использование переменных в качестве имени позволит решить эту проблему, но мне трудно это сделать и заставить компилятор работать с ним. Это мой текущий код, чтобы написать «Привет» в текстовый файл с именем «test.txt»:Создание файла .txt в C++ с переменными

ofstream myfile; myfile.open("test.txt"); myfile << "hello"; myfile.close();

Теперь я могу заменить «test.txt» с одной полукокса * указатель или массив символов буфера, но мне нужно разделить имя файла с расширением .txt. Идея, которую я имел, заключалась в том, чтобы каким-то образом объединить переменную char * для ссылки на имя (например, галактику, звезду, планету и т. Д.) Плюс числовое значение (это должно быть большое число, возможно, двойное или плавающее) , плюс текстовое расширение «.txt». Тогда это будет один указатель или массив символов, которые будут совместимы с myfile.open. Есть идеи? Я открыт для изменения процесса этого, пока я получаю тот же конечный результат.

+0

Вы считали строки? – Christophe

+0

Я должен также упомянуть, что всякий раз, когда я пытаюсь использовать строку вместо char * или char [] в myfile.open(), компилятор придумывает ошибки, заявляя, что вы не можете преобразовать строки и const char. –

ответ

0

Вы должны рассмотреть string вместо char* для вашего файла, так как C++ 11 позволяет оба типа:

string myfilename="test"; 
myfile.open(myfilename+".txt"); 
myfile << "hello"; 
myfile.close(); 

Для создания более сложных имен файлов вы могли бы рассмотреть возможность использования stringstreams: вы можете легко комбинировать и формат имя файла, используя обычный вывод fromtting unctions/операторов, и преобразовать его в строку.

stringstream nn; 
int counter=0; 
nn<<myfilename<<counter<<".txt"; 
myfile.open(nn.str()); 
... 
+0

Я пытался использовать строки раньше, но у меня были проблемы с его работой, кажется, что мне не хватало какого-то синтаксиса. Итак, я попробовал ваш код: 'stringstream nn; int counter = 0; string myfilename; nn << myfilename << counter << ". Txt"; ofstream myfile; myfile.open (nn.str()); myfile << "hello"; myFile.close(); ' Но я получаю сообщение об ошибке: ошибка: нет подходящей функции для вызова 'станд :: basic_ofstream :: открыт (станд :: basic_stringstream :: __ string_type)' Ошибка обращаясь к строке myfile.open. –

+0

Нашел вопрос, пришлось использовать .c_str() вместо .str(). Но эта версия работает только со строками, поэтому мне просто нужно либо найти способ преобразования строк в строки, либо найти способ преобразования чисел в строки без stringstream. –

+0

Обнаружен обходной способ применения .str() к stringstream и все работает, ty для ответов! –

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