Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
24.11.2013, 02:56     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #1
Привыкшему к удобствам 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");
Скажите , не тупое ли решение ? ) И вообще стоило хоть этим заниматься ?
Возможно есть более простые или более правильные решения... Спецы, подскажите ...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
24.11.2013, 03:11     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #2
Может сделать просто конвертер для всяких разных типов в LPCSTR?
А почему у функции такое длинное название? Не порядок, я бы назвал просто "p"
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
24.11.2013, 03:20  [ТС]     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #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;
......
Может сделать просто конвертер
Да можно наверное, это я так испытываю то да се... Вообще моя первая функция в С++. Еще многого не знаю...
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
24.11.2013, 04:19     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #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;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.11.2013, 10:12     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #5
stima, зачем специализации? Реализация ж одинаковая.
Или нужно исключить другие типы?
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
24.11.2013, 10:43     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 14:26     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ?
Еще ссылки по теме:

Как понять int a(int x,int y, int z)? C++
C++ Int в CHAR или LPCSTR (в теле цикла)
C++ Void send(int* to, int* from, int count)

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

Или воспользуйтесь поиском по форуму:
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
24.11.2013, 14:26     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ? #7
2Tulosba у меня ubuntu, и поэтому нет MessageBox, я просто хотел показать, что в случае с шаблонами, if не нужен и да в изначальном примере там только int и const char*, а значит есть ограничение.
Yandex
Объявления
24.11.2013, 14:26     Подобие MessageBox выводящего INT и LPCSTR . Не тупо ли ?
Ответ Создать тему
Опции темы

Текущее время: 15:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru