Отображения переменной в функции 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++ ?
3 ответов
создайте временный буфер для хранения строки и используйте 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);
кроме того, вы можете использовать varargs (старомодный способ: не способ 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);
сделайте то же самое для других.