2013-10-27 108 views
0

目前正在爲我的CompSci類開發一個彩票項目。C++結合displayBMP的兩個字符串

我有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 

} 

有什麼想法?

+0

由於您的代碼不起作用,您是否在問怎麼做? –

+0

是的,這是正確的,先生。 – cerealspiller

+0

好吧,讓我換句話來說,我想要使用的代碼不起作用。我幾乎完成了該項目,我只想要一個更清晰的方式顯示40個圖像,而不是調用displayBMP 40倍大聲笑 – cerealspiller

回答

0

我想你想:

1.BMP 
2.BMP 
3.BMP 
4.BMP 

等。

該代碼將是:

非C++ 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()); 
} 

用C++ 11:

std::string type = ".BMP"; 
for(int i = 0; i < 40; i++) 
{ 
    displayBMP(std::to_string(i) + type, randomX(), randomY()); 
} 
+0

前2個選項看起來不錯,但我得到以下錯誤['displayBMP':不能轉換參數1從'std :: string'改爲'char *'] – cerealspiller

+0

要將'name'轉換爲'const char *',你需要執行'.c_str()'。我不知道displayBMP函數的定義。如果displayBMP不需要修改name參數,那麼可以這麼做:'displayBMP(const_cast (name.c_str()),.....) ;' – Brandon

+0

剛剛看到你的編輯。 Non-C++ 11選項看起來好像可以工作,只需要將其實現到我的.h文件中......一些如何...是的。不知道在哪裏放置模板:( – cerealspiller

0

您可以使用功能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改名字,第一個例子會更多 直覺

+0

獲取錯誤[無法將參數1從'const char *'轉換爲'char *'] – cerealspiller

+0

我已更新並希望能夠幫助您^^ – RyanLiu

+0

alphanum和type返回正確的值,但名稱僅返回「.BMP」 – cerealspiller