c++ - 为什么 al_draw_textf() 打印数字而不是存储在字符串变量中的字母?

标签 c++ c visual-studio visual-c++ allegro5

我想在 allegro 屏幕上打印用户的名字,为此我声明一个字符串变量并要求用户输入他的名字,之后,我将字符串转换为 const char* 以便我可以将变量传递给 al_draw_textf()。但即使在将 const char* 变量传递给函数之后,它也会打印一些数字,而不是用户以字母形式输入的实际名称。 代码片段附在最后。

没有抛出编译时错误,我正在使用 Visual studio 2019 enterprise 并使用 Allegro 5。 我发布了程序运行时的一些屏幕截图。

std::string name; 
std::cout << "\n\nHello player, what's your name?"; getline(cin, name); 
name = name.c_str();
const char* Name = name.c_str();
al_draw_textf(font, al_map_rgb(255, 255, 255), 10, 10, 0, "Hi, %d",Name);

最佳答案

%d 格式字符串用于打印整数。要将 char * 打印为文本,请使用 %s

al_draw_textf(font, al_map_rgb(255, 255, 255), 10, 10, 0, "Hi, %s",Name);

关于c++ - 为什么 al_draw_textf() 打印数字而不是存储在字符串变量中的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56491844/

相关文章:

c# - float 比双倍慢吗? 64位程序运行速度比32位程序快吗?

c - C 中的位旋转 - 计算位

对链表的第一个和最后一个元素的混淆

c++ - 与 unordered_map 相互依赖的类型

c++ - asio::strand 的拷贝是否会创建一个新的执行程序?

c++ - 推荐一些c/c++的在线编译器

c - 可执行路径

c# - 无法加载文件或程序集 'System.Net.Http'

C# 应用程序将文件从 GAC 复制到执行文件夹

visual-studio - 最低 SDK 版本 Windows 10 (UWP)