Присвоение переменной имени файла CreateFileA

Я создаю файл .bmp, используя этот метод CreateFileA.

HANDLE hFile = CreateFileA("Screenshot01.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); На данный момент статичен и постоянно перезаписывает старый файл.

Я хочу вызывать этот метод несколько раз, каждый раз он будет создавать новый файл с другим именем файла, например

"Screenshot01.bmp" "Screenshot02.bmp" "Screenshot03.bmp" и т.д.

Он не должен увеличиваться, но имя файла должно каждый раз быть другим.

Как изменить имя файла при каждом вызове метода? Вы можете присвоить имя файла переменной?


person Ezrar    schedule 25.02.2015    source источник
comment
Можете ли вы присвоить имя файла переменной? Конечно, можете! Вы пробовали? Это сработало? Если нет, то в чем была ошибка?   -  person πάντα ῥεῖ    schedule 25.02.2015
comment
возможный дубликат вставки переменной int в имя файла   -  person Raymond Chen    schedule 25.02.2015
comment
Извините за повторяющийся вопрос, я признаю, что это был простой вопрос, я просто запутался в разных типах CreateFiles и разных типах параметров, которые они принимают. В следующий раз я изучу больше, прежде чем публиковать, так как я все еще новичок в C++, но спасибо за быстрые ответы и решения (это отличное сообщество).   -  person Ezrar    schedule 25.02.2015


Ответы (1)


Используйте std::string. Например:

#include <string>
....
std::string filename = "Screenshot01.bmp";
HANDLE hFile = CreateFileA(filename.c_str(), ...);

Чтобы создать имя файла из целого числа, вы можете сделать это:

#include <string>
....
std::string filename = "Screenshot" + std::to_string(id) + ".bmp";
HANDLE hFile = CreateFileA(filename.c_str(), ...);

Как изменить имя файла при каждом вызове метода?

Отслеживайте последнее использованное значение идентификатора и увеличивайте его, когда вам нужно новое значение.

person David Heffernan    schedule 25.02.2015
comment
Спасибо работает отлично. Я не знал, что вам нужно было повторно объявить тип данных переменной при объединении; думал, что это будет работать по строке filename = foo + bar; - person Ezrar; 25.02.2015