lexical_cast(std::string) 的替代方案
我有使用 lexical_cast 的模板化代码。
现在我想删除所有 lexical_cast 调用(因为它不能很好地与 /clr 配合使用)。
我需要在 std::string 和它们的值之间转换对象。
所以,第一个方向很简单 (T _from, std::string _to) :
std::ostringstream os;
os << _from;
_to = os.str();
但我想不出一种方法来通用地从字符串到任何类型(我需要一些可以与模板一起使用的通用的东西,可以'不只是对每种类型使用专门化并使用像atoi这样的函数)
编辑:
当然,我尝试过以相反的方向使用ostringstream。我收到此错误:
错误 C2784: 'std::basic_istream<_Elem,_Traits>; &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Elem *)' :无法推断出 'std::basic_istream<_Elem,_Traits> 的模板参数&&'来自 'std::ostringstream'
I've got templated code that uses lexical_cast.
Now I want to remove all the lexical_cast calls (because it doesn't work well with /clr).
I need to cast object between std::string and their value.
So, the first direction is easy (T _from, std::string _to) :
std::ostringstream os;
os << _from;
_to = os.str();
But I can't think of a way to do it generically from a string to any type (I need something generic that will work with templates, can't just use specializations for each type and use functions like atoi
)
Edit:
Of course I've tried using the ostringstream in the opposite direction. I get this error:
error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Elem *)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &&' from 'std::ostringstream'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
lexical_cast
使用双向流,<<
和>>
。您也可以这样做:不过请务必包括健全性检查。
lexical_cast
uses streaming in both directions,<<
and>>
. You could do the same:Be sure to include sanity checks though.