私はひもを持っています。それを文字列に記載されているデータ型に変換したい。
例:文字列 => "int"。
ここで、文字列の内容で変数を初期化する必要があります。
int value;
これどうやってするの?
私はひもを持っています。それを文字列に記載されているデータ型に変換したい。
例:文字列 => "int"。
ここで、文字列の内容で変数を初期化する必要があります。
int value;
これどうやってするの?
これが問題全体を解決するかどうかはわかりませんが、ほんの始まりに過ぎません:
#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;
}
文字列に次のようなものが含まれている場合: "(type)(separator)(value)",
例 (セパレーターが "$$$" の場合): "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 *
}