2012-12-12 31 views
0

(使用C++,OpenGL的/供過於求的Xcode,OSX)C++/OpenGL的,圖紙隨機字符來篩選

我在尋找幫助繪製隨機字符在屏幕上。 我已經分離的任務分爲兩個部分...

(1)我能夠用挑隨機UPPER_CASE信以下內容:

int launchCode1_random = rand() % 26; 
    char c1 = (char)(launchCode1_random+65); 
    cout << c1 << "\n"; 

(2)我可以畫在OpenGL串使用以下:

string launchCode1 = "thing"; 
    void * fontlaunchCode1 = GLUT_BITMAP_9_BY_15; 
    for (string::iterator i = launchCode1.begin(); i != launchCode1.end(); ++i) 
    { 
     char c = *i; 
     glutBitmapCharacter(fontlaunchCode1, c); 
    } 

...我想什麼上述步驟2中寫的,卻是:

string launchCode1 = c1; 

這樣做,我收到以下錯誤:「沒有可行的從'字符'轉換爲'字符串'。這對我來說很有意義。但我不完全理解爲什麼或如何。如果有其他解決方法我沒有看到,我很樂意聽到您對這個主題的想法。

編輯.....

這裏的決賽中,正與Pubby的幫助代碼:

int launchCode1_random = rand() % 26; 
    char c1 = (char)(launchCode1_random+65); 
    cout << c1 << "\n"; 

    string launchCode1 (1, c1); 
    void * fontlaunchCode1 = GLUT_BITMAP_9_BY_15; 
    for (string::iterator i = launchCode1.begin(); i != launchCode1.end(); ++i) 
    { 
     char c = *i; 
     glutBitmapCharacter(fontlaunchCode1, c); 
    } 

回答

1

如果你想從你可以做這樣的人物構造std::string

string launchCode1(1, c1); 

使用這個構造函數:

string(size_type count, 
     CharT ch, 
     const Allocator& alloc = Allocator()); 

http://en.cppreference.com/w/cpp/string/basic_string/basic_string

我不完全明白你在做什麼。如果你只想要一個字符,爲什麼還要打擾std::string?只是這樣做:

int launchCode1_random = rand() % 26; 
char c = (char)(launchCode1_random+65); 
glutBitmapCharacter(fontlaunchCode1, c); 
+0

非常感謝Pubby。這很奇妙。這是我更新的代碼:'int launchCode1_random = rand()%26; char c1 =(char)(launchCode1_random + 65); cout << c1 <<「\ n」; string launchCode1(1,c1); void * fontlaunchCode1 = GLUT_BITMAP_9_BY_15; (string :: iterator i = launchCode1.begin(); i!= launchCode1.end(); ++ i) { char c = * i; glutBitmapCharacter(fontlaunchCode1,c); } ' – kropcke

+0

@kropcke不客氣。編輯您的更新代碼到問題中。 – Pubby

+0

這是我正在開發的遊戲的一部分,我在屏幕上隨時隨地在特定時間和地點出現隨機字母,爲視覺體驗添加了一些視覺細節。一種'矩陣-y'。再次感謝您的幫助 - 我真誠地感謝您(希望您可以通過評論格式來閱讀本文)真誠的,kropcke。 – kropcke

0

這是不相關的問題,但還是很高興知道:你需要這行代碼:

srand (time(NULL)); 

之前,所有

int launchCode1_random = rand() % 26; 
char c1 = (char)(launchCode1_random+65); 
cout << c1 << "\n"; 

否則你我會一次又一次地以相同的隨機字符結束。

+0

謝謝你提醒Nilzone-,顯然效果會失去其他效果 - heheh。非常感謝你的幫助 - 我很感激。真誠的,kropcke – kropcke

+2

這並不完全正確,每次執行時都會得到完全相同的字符序列,但它不會重複相同的字符。 –