MessageBox c ++で変数を表示する方法は?
string name = "stackoverflow";
MessageBox(hWnd, "name is: <string name here?>", "Msg title", MB_OK | MB_ICONQUESTION);
次のように見せたい(#1):
"name is: stackoverflow"
この?
int id = '3';
MessageBox(hWnd, "id is: <int id here?>", "Msg title", MB_OK | MB_ICONQUESTION);
そして私はそれを次のように見せたい(#2):
id is: 3
c ++でこれを行う方法は?
文字列を格納するための一時バッファを作成し、sprintf
を使用して、変数の種類に応じてフォーマットを変更します。最初の例では、次のように機能するはずです。
char buff[100];
string name = "stackoverflow";
sprintf_s(buff, "name is:%s", name.c_str());
cout << buff;
次に、文字列引数としてbuffを使用してメッセージボックスを呼び出します
MessageBox(hWnd, buff, "Msg title", MB_OK | MB_ICONQUESTION);
intを次のように変更します。
int d = 3;
sprintf_s(buff, "name is:%d",d);
これはマクロで行うことができます
#define MSGBOX(x) \
{ \
std::ostringstream oss; \
oss << x; \
MessageBox(oss.str().c_str(), "Msg Title", MB_OK | MB_ICONQUESTION); \
}
使用するには
string x = "fred";
int d = 3;
MSGBOX("In its simplest form");
MSGBOX("String x is " << x);
MSGBOX("Number value is " << d);
または、可変引数を使用することもできます(昔ながらの方法:まだコツをつかんでいないC++ 11の方法ではありません)
void MsgBox(const char* str, ...)
{
va_list vl;
va_start(vl, str);
char buff[1024]; // May need to be bigger
vsprintf(buff, str, vl);
MessageBox(buff, "MsgTitle", MB_OK | MB_ICONQUESTION);
}
string x = "fred";
int d = 3;
MsgBox("In its simplest form");
MsgBox("String x is %s", x.c_str());
MsgBox("Number value is %d", d);
あなたの質問への答え:
文字列名= 'stackoverflow';
MessageBox( "name is:" + name、 "Msg title"、MB_OK | MB_ICONQUESTION);
他の人にも同じようにします。