将字符串转换为长长
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转换为数组,将字符串转换为数组