【发布时间】:2012-12-27 21:59:40
【问题描述】:
我在转换(或访问数据,我不确定)时遇到以下问题:
有map<int, string> keys我用来描述按钮,数字与Allegro5键码匹配(例如keys[81] = "PgDown")。我想使用al_draw_text在屏幕上打印数据,需要传递char*参数。
我试过用这种方式访问数据:
char dropdownBuffer[16];
cout << keys[dropdownKeyCode] << endl;
sprintf_s(dropdownBuffer, "%s", keys[dropdownKeyCode]);
cout << dropdownBuffer << endl;
gui.drawButton(CLIENT_PADDING, CLIENT_PADDING+50+219, 123, 38, dropdownBuffer);
控制台应该打印字符串Spacja 两次,但第二次有一些随机字符。
我现在做错了什么?也许还有其他可能的方法可以将此字符串转换为字符?
【问题讨论】:
-
使用
c_str()获得const char *。假装std::string是char *是个坏主意。 -
它给了我另一个错误:错误 C2664: 'GUI::drawButton' : cannot convert parameter 5 from 'const char *' to 'char *'。
-
然后复制它。
sprintf应该没问题。 -
永远,永远,永远通过
...传递 C++ 对象!一次也没有。