C++ 如何在wchar\u t*和int之间进行转换?

C++ 如何在wchar\u t*和int之间进行转换?,c++,casting,C++,Casting,我有一个函数,它返回xml元素的内部文本。但是,它以常量wchar\u t*的形式返回它。我希望将该值作为整数返回(在其他一些情况下为浮点)。这样做的最佳方法是什么?1)手动解析(例如使用sprintf&atof/atoi) 2) 使用boost::lexical_cast(请参阅) 3)使用字符串流()< P> C++方式为: wchar_t* foo = L"123"; std::wistringstream s(foo); int i = 0; s >> i; 使用Boos

我有一个函数,它返回xml元素的内部文本。但是,它以常量wchar\u t*的形式返回它。我希望将该值作为整数返回(在其他一些情况下为浮点)。这样做的最佳方法是什么?

1)手动解析(例如使用
sprintf
&
atof
/
atoi

2) 使用
boost::lexical_cast
(请参阅)

3)使用字符串流()

< P> C++方式为:

wchar_t* foo = L"123";
std::wistringstream s(foo);
int i = 0;
s >> i;
使用Boost,您可以执行以下操作:

try {
    int i2 = boost::lexical_cast<int>(foo);
} catch (boost::bad_lexical_cast const&) {
    ...
}

谢谢你!捕获此异常的正确方法是什么?或者只是一个通用异常处理程序?@Chris更新了异常处理示例。Boost定义了
类bad\u词法\u cast:public std::bad\u cast
,只需将其作为任何其他异常捕获。问题,这个wistringstream是否也适用于浮点?试图避免在我的项目中包括Boo:))克里斯是的,C++和Boost解决方案对于<代码>浮点,<代码>双,<代码>长Lo/<代码>等都很好。(当然,您需要将
更改为
或Boost示例中的任何内容,或者将其包装在模板函数调用中以推断正确的类型)。这两种解决方案还可以通过定义
操作符的重载来扩展,以适用于您自己的自定义类型
int i = _wtoi(foo);
long l = _wcstol(foo, NULL, 10);