如何将 std::wstring 转换为数字类型(int、long、float)?
将 std::wstring 转换为数字类型(例如 int、long、float 或 double)的最佳方法是什么?
What's the best way to convert std::wstring to numeric type, such as int, long, float or double?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
C++0x 引入了以下
中的函数:idx
是一个可选的空指针,指向str
内的转换结束(由转换函数设置)。C++0x introduces the following functions in
<string>
:idx
is an optionally null pointer to the end of the conversion withinstr
(set by the conversion function).使用
boost::lexical_cast
:如果字符串无法转换,则会抛出
boost::bad_lexical_cast
异常。另一个选择是使用 Boost Qi(Boost.Spirit 的子库):
使用 Qi 比 lexical_cast 快得多,但会增加编译时间。
Either use
boost::lexical_cast<>
:These will throw a
boost::bad_lexical_cast
exception if the string can't be converted.The other option is to use Boost Qi (a sublibrary of Boost.Spirit):
Using Qi is much faster than lexical_cast but will increase your compile times.
最好的?
如果您不想使用除 CRT 库以外的任何内容,并且在字符串无法转换时对获得 0 感到满意,那么您可以节省错误处理、复杂语法(包括标头),
这一切都取决于您在做什么。这就是KISS方式!
Best?
If you don't want to use anything more than the CRT library, and are happy with getting 0 if the string cannot be converted, then you can save on error handling, complex syntax, including headers by
It all depends what you are doing. This is the KISS way!
使用 wstringstream / stringstream:
Use wstringstream / stringstream:
只需使用字符串流:
不要忘记
#include
just use the stringstream:
do not forget to
#include <sstream>
所以我正在使用 Embarcadero,而那块 ..... 不允许我使用 stoi,所以我必须创建自己的函数。
So I was using Embarcadero and that piece of ..... didn´t let me use stoi, so i have to create my own function.