В C ++ мне нужно преобразовать строку в любой тип во время выполнения, когда я не знаю, какой тип я получаю в строке. Я слышал, что в boost есть возможность использовать lexical_cast, но какой самый эффективный способ его реализовать?
Я мог бы получить такую строку от клиента: Date = "25/08/2010", Someval = "2", Blah = "25.5".
Теперь я хочу иметь возможность преобразовать эти строки в их тип, например, Somval, очевидно, является int, а Date может быть boost :: date или чем-то еще. Дело в том, что в настоящее время я не знаю, в каком порядке они будут предоставлены мне, поэтому сложно написать код, который будет выполнять кучу приведений.
Я мог бы использовать кучу операторов if / else или операторов switch / case, однако я думаю, что, возможно, есть лучший способ сделать это.
Я не ищу что-то отличное от lexical_cast, я могу полностью использовать это, я ищу, если кто-то знает лучший способ сделать это:
std::string str = "256";
int a = lexical_cast<int>(str);
//now check if the cast worked, if not, try another...
Это слишком сложная игра в догадки, и если у меня есть 10 возможных типов для любой заданной строки, это звучит немного неэффективно. Особенно, если он должен сделать 1000 из них в любой момент времени.
Кто-нибудь может посоветовать?
Алекс Браун примечания - пример строки представляет собой фрагмент данных XML, поступающих от клиента.