将字符串转换为长长

Posted

技术标签:

【中文标题】将字符串转换为长长【英文标题】:convert string to long long 【发布时间】:2008-11-19 23:14:31 【问题描述】:

我正在使用 VS 2008 创建一个 C++ DLL(非托管)项目,我需要将 char* 转换为 long long 类型。有什么简单的方法吗?

提前致谢:)

【问题讨论】:

似乎这个问题每周左右都会出现:-| 【参考方案1】:

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

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

您可能需要以 64 位应用程序为目标才能使其工作。

C++ FAQ

【讨论】:

您应该使用 std::int64_t 而不是 MSVC __int64 语言扩展。 我不认为 std::int64_t 在 VC++ 2008 上可用【参考方案2】:

在我看来,如果您使用的是 boost,那么 lexical_cast 是不错的选择。

long long ll = boost::lexical_cast<long long>(mystr)

【讨论】:

【参考方案3】:

尝试_atoi64. 这需要char* 并返回__int64

【讨论】:

买家注意:atoi 不是类型安全的,也不提供任何边界检查! 是的,_atoi64 可能不是一个好的选择。如果您使用的是 .NET 框架,为什么不在 String 而不是 char* 上使用 ToInt64。如果不是,我认为 strtol 或它的等价物是当前的标准方法,并且比 atoi 更安全。 如果您认为这是一个很好的解决方案(即,不担心类型安全/边界检查)并且正在使用 linux / osx,您可以使用 atoll()。【参考方案4】:

另一个选项是使用字符串库中的 stoll()。接受一个 C++ 字符串。

long long ll = std::stoll(mystr);

Docs

【讨论】:

以上是关于将字符串转换为长长的主要内容,如果未能解决你的问题,请参考以下文章

将 node.js 缓冲区转换为字符串,然后转换为 JSON

将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组

如何将字符串转换为整型数?

如何将字符串转换成javaBean

将十进制字符串转换为十六进制字符串而不将字符串转换为整数

如何将数据实体转换为 JSON 字符串