如何在wchar_t *和int之间进行转换?

时间:2009-11-15 00:06:31

标签: c++ casting

我有一个返回xml元素内部文本的函数。但是,它返回const wchar_t*。我希望将此值作为整数返回(在其他一些情况下为浮点数)。这样做的最佳方法是什么?

2 个答案:

答案 0 :(得分:7)

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&) {
    ...
}

根据您使用的CRT实施情况,您可能具有“广泛”atoi / strtol功能:

int i = _wtoi(foo);
long l = _wcstol(foo, NULL, 10);

答案 1 :(得分:3)

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

2)使用boost::lexical_cast(请参阅http://www.boost.org/doc/libs/1_40_0/libs/conversion/lexical_cast.htm

3)使用字符串流(http://www.cplusplus.com/reference/iostream/ostringstream/