将字符串转换为长整型

9
我正在使用VS 2008创建一个C++ DLL(非托管)项目,需要将char*转换为long long类型。有没有简单的方法可以实现呢?
提前感谢 :)

这个问题似乎每周都会出现 :-| - Leon Timmermans
4个回答

15

最简单的方法是使用std::stringstream(也是最类型安全的...)

std::stringstream sstr(mystr);
__int64 val;
sstr >> val;

为使此操作生效,您可能需要针对64位应用程序进行定位。

C++常见问题解答


你应该使用 std::int64_t 而不是 MSVC 的 __int64 语言扩展。 - LB--
我认为VC++ 2008上没有std::int64_t。 - Alan

7
如果您使用的是boost库,我认为lexical_cast是最好的选择。
long long ll = boost::lexical_cast<long long>(mystr)

5

尝试使用_atoi64函数。它接受char*类型的参数,并返回__int64类型的值。


1
买家需谨慎:atoi不具备类型安全性,也不提供任何边界检查! - Alan
是的,_atoi64可能不是一个好选择。如果你正在使用.NET框架,为什么不使用ToInt64将String转换为数字,而不是使用char*?如果不是,我认为strtol或其等效物是当前标准的方法,并且比atoi更安全。 - Jason Coco
如果您认为这是一个好的解决方案(即不担心类型安全/边界检查),并且正在使用Linux / OSX,则可以使用atoll()。 - ThinkBonobo

4
另一种选择是使用字符串库中的stoll()。它接收一个C++字符串作为参数。
long long ll = std::stoll(mystr);

Docs


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接