【发布时间】:2012-01-03 15:50:59
【问题描述】:
我正在处理从字符串中读取 64 位无符号整数 unsigned long long 的问题。我的代码应该适用于 GCC 4.3 和 Visual Studio 2010。
我阅读了有关该主题的问题和答案:Read 64 bit integer string from file 并且认为strtoull 会比使用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");
我担心这个解决方案的效率,那么在这个场景中是否有更好的选择?
【问题讨论】:
-
它是你应用的热点吗?
-
@Violet:不是真的,但它会定期加载大文件以刷新 GUI,我希望它尽可能流畅地运行。
-
您可以编写自己的转换。它可能比使用
stringstream更快。在此处查看基准:tinodidriksen.com/2010/02/16/cpp-convert-string-to-int-speed
标签: c++ visual-studio gcc 64-bit unsigned-long-long-int