使用 al_ustr_newf Allegro 5 复制字符串
Copying string with al_ustr_newf Allegro 5
我试图在我的游戏中制作排行榜,但我遇到了一个我无法解决的问题。
我的文本文件中有带名称的字符串和带分数的整数。我尝试将它们复制到 ALLEGRO_USTR
以在屏幕上显示。
当我使用 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);
也许有另一种方法可以在 allegro 5 中复制字符串?
Create a new string using a printf-style format string.
Notes:
The "%s" specifier takes C string arguments, not ALLEGRO_USTRs. Therefore to pass an ALLEGRO_USTR as a parameter you must use al_cstr, and it must be NUL terminated. If the string contains an embedded NUL byte everything from that byte onwards will be ignored.
也就是说,al_ustr_newf("%s", name1);
是未定义的行为,遍历堆栈变量直到找到 NUL
字节。 std::string
的地址几乎从不与实际缓冲区的地址相同。
使用 al_ustr_newf("%s", name1.c_str());
,就像您必须使用 printf
和 std::string
.
一样
我试图在我的游戏中制作排行榜,但我遇到了一个我无法解决的问题。
我的文本文件中有带名称的字符串和带分数的整数。我尝试将它们复制到 ALLEGRO_USTR
以在屏幕上显示。
当我使用 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);
也许有另一种方法可以在 allegro 5 中复制字符串?
Create a new string using a printf-style format string.
Notes:
The "%s" specifier takes C string arguments, not ALLEGRO_USTRs. Therefore to pass an ALLEGRO_USTR as a parameter you must use al_cstr, and it must be NUL terminated. If the string contains an embedded NUL byte everything from that byte onwards will be ignored.
也就是说,al_ustr_newf("%s", name1);
是未定义的行为,遍历堆栈变量直到找到 NUL
字节。 std::string
的地址几乎从不与实际缓冲区的地址相同。
使用 al_ustr_newf("%s", name1.c_str());
,就像您必须使用 printf
和 std::string
.