Здравствуйте, ankorol, Вы писали:
A>Здравствуйте, rg45, Вы писали:
R>>Не получится потому, что директивы #pragma обрабатываются еще до компиляции препроцессором.
A>Ваша правда, так не получится, а если чисто теоретически такое преобразование можно сделать?
Упрощенно, для иллюстрации идеи, ниже показано как это можно реализовать. Если сделать еще пару-тройку танцевальных движений с бубном, то можно обобщить реализацию на целочисленный тип произвольного размера и убрать не значашие нули в начале строки.
template<int N> struct Exp10 { enum { value = Exp10<N-1>::value * 10 }; };
template<> struct Exp10<0> { enum { value = 1 }; };
template<int N, int Pos>
struct SymbolAt
{
static const char value = N / Exp10<Pos>::value % 10 + '0';
};
template<int N>
struct IntToString
{
static const char value[];
};
template<int N>
const char IntToString<N>::value[] =
{
SymbolAt<N,9>::value,
SymbolAt<N,8>::value,
SymbolAt<N,7>::value,
SymbolAt<N,6>::value,
SymbolAt<N,5>::value,
SymbolAt<N,4>::value,
SymbolAt<N,3>::value,
SymbolAt<N,2>::value,
SymbolAt<N,1>::value,
SymbolAt<N,0>::value,
};
//Использование:
#include <iostream>
int main()
{
std::cout << IntToString<123>::value << std::endl;
}