Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 37
#1

Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? - C++

24.11.2013, 02:56. Просмотров 386. Ответов 6
Метки нет (Все метки)

Привыкшему к удобствам PHP с++ нубу захотелось сделать такое вот извращение..
Функция выводит текст как INT типа так и строкового типа...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template< typename mytype >
void pre(mytype var)
{   
    LPCSTR str;
    const char * type = typeid(var).name();
    if (!strcmp("int", type)) {
        char buffer[35];
        str = _itoa((int)var, buffer, 10);
    } else if (!strcmp("char const *", type)) {
        str = (LPCSTR)var;      
    } else str = "Not right type";
        
    MessageBox(0, str, "Message", MB_OK);
}
Ну и вызывать
C++
1
2
pre(123);
pre("BUGAGA");
Скажите , не тупое ли решение ? ) И вообще стоило хоть этим заниматься ?
Возможно есть более простые или более правильные решения... Спецы, подскажите ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 02:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? (C++):

Int в CHAR или LPCSTR (в теле цикла) - C++
Привет, есть цикл: for (int i=0,x=650;i&lt;2;i++,x-=80) { TCHAR BtnText; ...

C2664: "BOOL PlaySoundA (LPCSTR,HMODULE,DWORD)": невозможно преобразовать аргумент 1 из unsigned char в LPCSTR - C++
Есть массив, который я пытаюсь проиграть через PlaySoundA https://pastebin.com/dqCvsmmB Пытаюсь проиграть следующим образом:...

Вывод значения типа int с помощью MessageBox - C++
Здравствуйте! Изучаю C++ очень мало ( ~2-3 часа ) и создаю консольную игру. Мне надо вывести значение int, в MessageBox, пробывал через...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

int->LPCSTR && char->LPCSTR - Visual C++
Подскажите как преобразовать int в LPCTSTR и char в LPCTSTR?

Вывод int переменных в MessageBox - C#
поиогите пожалуйста с выводом int переменных в massegeBox(&quot; &quot;); дайте пожалуйста рабочий class который решает эту задачу, вот ниже...

6
Casper-SC
Эксперт .NET
3564 / 1784 / 195
Регистрация: 27.03.2010
Сообщений: 5,011
Записей в блоге: 1
24.11.2013, 03:11 #2
Может сделать просто конвертер для всяких разных типов в LPCSTR?
А почему у функции такое длинное название? Не порядок, я бы назвал просто "p"
0
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 37
24.11.2013, 03:20  [ТС] #3
Долгая история..
типа <PRE> в HTML выводит текст какой он есть ...
Вообще , можно заменить так еще , чтобы ворнингов не было
C++
1
2
3
4
5
6
......
if (!strcmp("int", type)) {
        char buffer[65];
        _itoa_s((int)var, buffer, 65, 10);
        str = buffer;
......
Может сделать просто конвертер
Да можно наверное, это я так испытываю то да се... Вообще моя первая функция в С++. Еще многого не знаю...
0
stima
495 / 345 / 43
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
24.11.2013, 04:19 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
template <typename T>
void foo(const T& obj);
 
template <>
void foo(const int& obj)
{
    std::cout << obj << std::endl;
}
 
template <>
void foo(const char* const& obj)
{
    std::cout << obj << std::endl;
}
 
 
int main()
{
    foo<int>(42);
    foo<const char*>("42");
 
    return 0;
}
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
24.11.2013, 10:12 #5
stima, зачем специализации? Реализация ж одинаковая.
Или нужно исключить другие типы?
0
ya_noob
_
314 / 148 / 9
Регистрация: 08.10.2011
Сообщений: 432
24.11.2013, 10:43 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <sstream>
 
template< typename mytype >
void pre(mytype var)
{   
    std::ostringstream oss;
    oss << var;        
    MessageBox(0, oss.str().c_str(), "Message", MB_OK);
}
 
int main()
{
    pre( "asd" );
    pre( 123 );
 
    return 0;
}
0
stima
495 / 345 / 43
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
24.11.2013, 14:26 #7
2Tulosba у меня ubuntu, и поэтому нет MessageBox, я просто хотел показать, что в случае с шаблонами, if не нужен и да в изначальном примере там только int и const char*, а значит есть ограничение.
0
24.11.2013, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 14:26
Привет! Вот еще темы с ответами:

void _fastcall TForm1::Vector(int x0, int y0, int a, int l); - C++ Builder
//--------------------------------------------------------------------------- #include &quot;DateUtils.hpp&quot; // для доступа к SecondOf,...

[C++ Error] Unit1.cpp(50): E2316 '_fastcall TForm1::Vector(int,int,int,int)' is not a member of 'TForm1' - C++ Builder
есть событие набраное в Unit.cpp, при запуске программы выбивается ошибка: Unit1.cpp(50): E2316 '_fastcall...

Создание окна, выводящего данные из формы - JavaScript
Здравствуйте. Имеется, например, три инпута типа radio. Мне нужно при нажатии кнопки сделать вывод в отдельном окне о том, какой инпут был...

Два раза открывается MessageBox.Show после второго вызова MessageBox - C#
Здравствуйте! Подскажите пожалуйста... Мне вот надо было сделать диалоговое окно для ввода данных для бегущей строки. Кроме этого,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru