替代lexical_cast <t>(std :: string)</t>

时间:2011-07-31 10:48:00

标签: c++ templates boost lexical-cast

我有使用lexical_cast的模板化代码。

现在我想删除所有lexical_cast调用(因为它与/ clr不兼容)。

我需要在std :: string和它们的值之间转换对象。

所以,第一个方向很简单(T _from,std :: string _to):

std::ostringstream os;
os << _from;
_to =  os.str();

但是我想不出从字符串到任何类型的一般方法(我需要一些可以使用模板的泛型,不能只为每种类型使用特化并使用像{{1}这样的函数})

修改

当然我尝试在相反方向使用ostringstream。我收到这个错误:

错误C2784:'std :: basic_istream&lt; _Elem,_Traits&gt; &amp; std :: operator&gt;&gt;(std :: basic_istream&lt; _Elem,_Traits&gt;&amp;&amp;,_ Elem *)':无法推断'std :: basic_istream&lt; _Elem,_Traits&gt;的模板参数&安培;&安培;”来自'std :: ostringstream'

1 个答案:

答案 0 :(得分:3)

lexical_cast使用两个方向的流媒体<<>>。你也可以这样做:

std::stringstream sstr;
sstr << _from;
sstr >> _to;

请确保包括完整性检查。