2016-05-27 71 views
0

我試圖在我的遊戲中製作排行榜,但遇到了一個我無法弄清楚的問題。 我有我的文本文件得分的名稱和整數字符串。我嘗試將它們複製到ALLEGRO_USTR以在屏幕上顯示它。使用al_ustr_newf複製字符串Allegro 5

當我使用al_ustr_newf("%s", name1)時,它會複製一些隨機標誌。

fstream file2; 
file2.open("leaderboard.txt", ios_base::in); 

string name1; 
string name2; 
string name3; 
int temp_score1; 
int temp_score2; 
int temp_score3; 

file2 >> name1 >> temp_score1; 
file2 >> name2 >> temp_score2; 
file2 >> name3 >> temp_score3; 

ALLEGRO_USTR * ustr_name1 = NULL; 
ustr_name1 = al_ustr_newf("%s", name1); 

也許還有另一種方法來複制字符串在快板5?

回答

0

al_ustr_newf reference

創建使用printf風格的格式字符串的新字符串。

注:

的 「%S」 符需要C字符串參數,而不是ALLEGRO_USTRs。因此,要將ALLEGRO_USTR作爲參數傳遞,您必須使用al_cstr,並且它必須以NUL結尾。如果字符串包含嵌入的NUL字節,則該字節以後的所有內容都將被忽略。

話雖這麼說,al_ustr_newf("%s", name1);是不確定的行爲,通過你的堆棧變量迭代,直到它找到一個NUL字節。 std::string的地址幾乎不會與實際緩衝區的地址相同。

使用al_ustr_newf("%s", name1.c_str());,就像你必須使用printfstd::string一樣。

+0

非常感謝!它現在工作,因爲我希望它:) – P3piK