В настоящее время работает над проектом лотереи для моего класса CompSci.
У меня 40 изображений с мячом (1.BMP до 40.BMP), и я хочу использовать цикл for для отображения каждого шара.
Я могу показать их просто отлично, если я вызову displayBMP все 40 раз, но должен быть более красивый способ сделать это.
string type = ".BMP";
for(int i = 0; i < 40; i++)
{
char alphanum = i;
//char* name = combine alphanum and type
displayBMP(name, randomX(), randomY());
}
редактировать
Попытка положить этот мусор в.cpp файл для моего заголовка.
#include "Lottery.h"
void Lottery::initDisplay()
{
//Draw Some Lines
//Display Lottery balls 1-40
}
Есть предположения?
Я думаю, вы хотите:
1.BMP
2.BMP
3.BMP
4.BMP
и т.д..
Код для этого:
Non-С++ 11:
#include <sstream>
template <typename T>
std::string ToString(T Number)
{
std::stringstream ss;
ss << Number;
return ss.str();
}
std::string type = ".BMP";
for(int i = 0; i < 40; i++)
{
displayBMP(ToString(i) + type, randomX(), randomY());
}
Использование С++ 11:
std::string type = ".BMP";
for(int i = 0; i < 40; i++)
{
displayBMP(std::to_string(i) + type, randomX(), randomY());
}
name
в const char*
, вам нужно сделать .c_str()
. Я не знаю определения вашей функции displayBMP. Если displayBMP НЕ нужно изменять параметр name, это можно сделать безопасно: displayBMP(const_cast<char*>(name.c_str()), .....);
Вы можете использовать функцию c_str() в строковом классе для возврата const char *
Итак, если первый тип displayBMP - const char *
например
std::string type = ".BMP";
for(int i = 0; i < 40; i++)
{
char alphanum = i;
std::string name = "" + alphanum + type;
displayBMP(name.c_str(), randomX(), randomY());
}
Однако тип char *
например
std::string type = ".BMP";
for(int i = 0; i < 40; i++)
{
char alphanum = i;
std::string name = "" + alphanum + type;
displayBMP(&name[0], randomX(), randomY());
}
Здесь я предлагаю преобразовать тип имени в строку, которая будет более удобной, и если вы не хотите изменять имя в displayBMP, первый пример будет более интуитивным