Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232

Нужен шаблон или функция: по типу получить строковое представление

28.11.2021, 14:04. Показов 847. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что-то типа:
C++
1
char* Type<float>(){return "FLOAT"};
нашёл такой вариант
C++
1
2
3
4
5
template <auto x> constexpr auto constant = x;
 
auto v1 = constant<5>;      // v1 == 5, decltype(v1) is int
auto v2 = constant<true>;   // v2 == true, decltype(v2) is bool
auto v3 = constant<'a'>;    // v3 == 'a', decltype(v3) is char
не особо подходит

Возможно через constexpr как то сделать можно

Это нужно чтобы при создании объекта массива с каким либо типом шаблон присваивал в его свойство строковое представление.
например: this->type=Type<dTYPE>;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2021, 14:04
Ответы с готовыми решениями:

Процедура и функция: строковое представление числа
Напишите функцию itoa(int a, char *s), которая сохдает строковое представление a и возвращает его в s. Целое число должно передоваться в...

Получить строковое представление нажатой клавиши
Несколько дней назад начал изучать android , первое что пришло в голову- написать службу-кейлогер, но вот никак не могу найти метод который...

Получить двоичное строковое представление целого неотрицательного числа
Помогите пожалуйста с программой, очень надо. Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление...

3
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
28.11.2021, 14:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
 
 
int main() {
 
    int i;
 
    std::cout << typeid(i).name() << '\n';
    
    return 0;
 
}
0
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
28.11.2021, 14:30  [ТС]
Не подходит.

Я определил свои типы и нужно в конструкторе массива свойству this->type присваивать строковое представление типа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Типы данных
typedef bool LOGIC;                     // 0..1
typedef char LETTER;                    // буква
typedef __INT8_TYPE__ RANGE;        // -128..127
typedef __UINT8_TYPE__ BYTE;        // 0..255
typedef __INT16_TYPE__ INT_S;       // -32768..32767
typedef __UINT16_TYPE__ INT_W;  // 0..65535
typedef __INT32_TYPE__ INT_M;       // -2147483648..2147483647
typedef __UINT32_TYPE__ INT_L;  // 0..4294967295
typedef __INT64_TYPE__ INT_T;       // -9223372036854775808..9223372036854775807
typedef __UINT64_TYPE__ INT_B;  // 0..18446744073709551615
typedef float FLOAT;                        // 1.8E-38..1.8E+38     32b
typedef double DOUBLE;              // 2.2E-308..1.8E+308   64b
typedef char* STRING;                   // строка
typedef void* POINTER;              // указатель
Пример:
C++
1
2
3
4
5
6
7
8
9
10
template <typename dTYPE>
class Array : public Dinamic {
public:
    dTYPE *vars;
    Array(INT_L sz=0,INT_L rv=10){
        this->sz=sz;this->rv=rv;this->tl=sz+rv;
        this->vars=new dTYPE[this->tl];
        // this->type=Type<dTYPE>; // << как то так
    }
    ...
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
28.11.2021, 14:53
Цитата Сообщение от Nishen Посмотреть сообщение
typeid(i).name()
У этого решения есть один нюанс. name() возвращает implementation-default значение. Оно не обязано совпадать с записью типа в исходнике. И оно не обязано быть одинаковым на разных компиляторах, разных версиях одного компилятора или разных настройках одной версии компилятора.

тут несколько вариантов:
1) взять где-то готовую библиотеку для этого (например Boost::TypeIndex);
2) использовать непереносимые средства компилятора (например в gcc есть <cxxabi.h> -> abi::__cxa_demangle);
3) самостоятельно написать подобную библиотеку через организацию подобия compile-time рефлексии, технику можно подсмотреть здесь: https://stackoverflow.com/a/20170989/ (там также есть и примеры других подходов);
4) написать это самостоятельно через специализации (можно упростить работу, завернув повторяющийся код в макро);
5) использовать внешнюю кодогенерацию для пункта 4.

Что именно выбрать зависит от специфики проекта и прочих условий, которые известны только ТС.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2021, 14:53
Помогаю со студенческими работами здесь

Дано натуральное число. Получить строковое представление этого числа
Дано натуральное число. Получить строковое представление этого числа в виде последовательности цифр и пробелов, разделяющих группы по три...

Как получить строковое представление ключей и значений из коллекции Dictionary
Как получить строковое представление значений ключе я значений из коллекции Dictionary

Программа переводит строковое представление числа в числовое представление
Программа получает запись действительного числа в виде строки. Входная переменная, то есть, имеет тип данных String. Программа...

Перевести строковое представление числа в числовое представление
Программа получает запись действительного числа в виде строки. Входная переменная, то есть, имеет тип данных String. Программа переводит...

Строковое представление
Всем добрый день, если возможно то помогите пожалуйста со строковом представлением, через __repr__() и __str__(). Я пробовал это сделать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru