Как преобразовать строку в тип данных, упомянутый в строке в C ++

0

У меня есть строка. Я хочу преобразовать это в тип данных, упомянутый в строке.
например: string => "int".
теперь я должен инициализировать переменную с содержимым в строке.

int value;

Как я могу это сделать?

  • 3
    Поскольку типы фиксируются во время компиляции, это будет возможно только для некоторого ограниченного, заранее определенного списка типов, и это будет зависеть от того, как вы хотите использовать результат. Вы уже предприняли попытку?
  • 0
    Я пытался использовать typedef, но это было бесполезно
Показать ещё 17 комментариев
Теги:
string
type-conversion

2 ответа

1

Не знаю, разрешит ли это всю вашу проблему, а просто начнется:

#include <iostream>
using namespace std;

template <class T>
class myType
{
    public:
     T obj;
     void show()
     {
        cout << obj << endl;
     }
};

void CreateType(char stype)
{
    switch(stype)
    {
        case 'i':
            myType<int> o ;
            o.obj = 10;
            cout << "Created int "  << endl;
            o.show();
            break;
        case 'd':
            myType<double> o1 ;
            o1.obj = 10.10;
            cout << "Created double "  << endl;
            o1.show();
            break;
    }
}
int main()
{ 
    CreateType('i');
    CreateType('d');
     return 0;   
}
0

Если ваша строка содержит что-то вроде этого: "(тип) (разделитель) (значение)",

например (если разделитель "$$$"): "int $$$ 132" или "double $$$ 54.123", вы должны написать небольшой парсер.

const std::string separator = "$$$";
const unsigned int separatorLength = 3;

std::string str = "int$$$117";
std::string type, value;

unsigned int separatorPosition = str.find(separator);
type = str.substr(0, separatorPosition);
value = str.substr(separatorPosition + separatorLength);

void *variable;
if (type == "int"){
    //convert value to int and store it in void *
} else
if (type == "double"){
    //convert value to double and store it in void *
} else
if (type == "char"){
    //convert value to char and store it in void *
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню