web-dev-qa-db-ja.com

MessageBox c ++で変数を表示する

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 ++でこれを行う方法は?

7
user1738413

文字列を格納するための一時バッファを作成し、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);
8
Gibby

これはマクロで行うことができます

#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);
2
cup

あなたの質問への答え:

文字列名= 'stackoverflow';

MessageBox( "name is:" + name、 "Msg title"、MB_OK | MB_ICONQUESTION);

他の人にも同じようにします。

0
user3148898