在C ++标准库中std :: strtoul等价?

时间:2013-06-27 04:40:11

标签: c++

考虑以下示例:

#include <iostream>
#include <clocale>
#include <cstdlib>
#include <string>
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::string s = "03A0";
    wchar_t wstr = std::strtoul(s.c_str(), nullptr, 16);
    std::wcout << wstr;
}

这会在Coliru上输出Π

问题

std::strtoul来自<cstdlib>。使用它我完全没问题,但是我想知道上面的例子是否只能使用C ++标准库(也许是字符串流)?

另请注意,字符串上没有prefex 0x表示十六进制。

1 个答案:

答案 0 :(得分:6)

当然,std::stoul

wchar_t wstr = std::stoul(s, nullptr, 16);

主要区别在于它可以抛出错误的异常。