字符串的64位整数转换

Ant*_*rez 5 c++ 64-bit gcc unsigned-long-long-int visual-studio

我正在处理unsigned long long从字符串中读取64位无符号整数的问题.我的代码应该适用于GCC 4.3和Visual Studio 2010.

我读了这个问题并回答了这个主题:从文件中读取64位整数字符串,这样strtoull可以使工作比使用a更好,更有效std::stringstream.很遗憾strtoull在Visual Studio中不可用stdlib.h.

所以我写了一个简短的模板函数:

template <typename T>
T ToNumber(const std::string& Str)
{
    T Number;
    std::stringstream S(Str);
    S >> Number;
    return Number;
}

unsigned long long N = ToNumber<unsigned long long>("1234567890123456789");
Run Code Online (Sandbox Code Playgroud)

我担心这个解决方案的效率,所以在这个方案中有更好的选择吗?

Che*_*Alf 5

请参阅http://social.msdn.microsoft.com/Forums/zh-CN/vclanguage/thread/d69a6afe-6558-4913-afb0-616f00805229/

“它被称为_strtoui64(),_ wcstoui64()和_tcstoui64()。还有用于自定义语言环境的_l版本。HansPassant
。”

顺便说一句,使用Google之类的方法是要注意Google会自动认为您错了(就像Visual Studio的较新版本一样),而是搜索其他内容,因此请确保单击链接以搜索内容您告诉它要搜索。

干杯,……