0

キャスト(またはデータへのアクセス、よくわかりません)に関して次の問題があります:

ボタンを説明するためにmap<int, string> keys使用します。番号はAllegro5キーコードと一致します(例keys[81] = "PgDown")。char*パラメータを渡す必要があるal_draw_textを使用して画面にデータを印刷したい。

私はこの方法でデータにアクセスしようとしました:

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を2回出力する必要がありますが、2回目はランダムな文字がいくつかあります。

私は今何を間違っていますか?たぶん、この文字列をcharにキャストする他の可能な方法がありますか?

4

2 に答える 2

3

文字列からデータへのポインタを取得するには、c_str()を使用します。ref:thisを参照してください。

置換コード:

sprintf_s(dropdownBuffer, "%s", keys[dropdownKeyCode]);

と:

sprintf_s(dropdownBuffer, "%s", keys[dropdownKeyCode].c_str());
于 2012-12-27T22:01:09.027 に答える
0

sprintf_sにはsizeof引数が必要だと思いました。

sprintf_s(dropdownBuffer, sizeof(dropdownBuffer), "%s", keys[dropdownKeyCode]);

また

const char* dropdownBuffer = keys[dropdownKeyCode].c_str();
于 2012-12-27T22:16:36.703 に答える