C++将字符串转换为uint64_t

问题描述:

我想从字符串转换为uint64_t整数。 stoi返回一个32位整数,所以它不会在我的情况下工作。还有其他解决方案吗?C++将字符串转换为uint64_t

你尝试

uint64_t value; 
std::istringstream iss("18446744073709551610"); 
iss >> value; 

Live Demo


这可能对于过时的标准工作了。

如果您使用C++ 11或更高版本,请尝试std::stoull

This post也可能有帮助。因为其他的问题是关于C.

+0

那么,C++ 11可以被认为是几年以来的现行标准。 –

+1

它是* a *标准,但不是**标准。由于工作或遗留代码或其他原因,仍然有很多人正在使用C++ 03。 – Gambit

+0

当然** **标准是C++ 14? –

如果你使用升压我没有这个标记为重复的,你可以利用boost::lexical_cast

#include <iostream> 
#include <string> 
#include <boost-1_61/boost/lexical_cast.hpp> //I've multiple versions of boost installed, so this path may be different for you 

int main() 
{ 
    using boost::lexical_cast; 
    using namespace std; 

    const string s("2424242"); 
    uint64_t num = lexical_cast<uint64_t>(s.c_str()); 
    cout << num << endl; 

    return 0; 
} 
+0

我没有使用boost – Cauchy

+2

下一位读者可能仍然是一个有用的答案。 –

+0

@BaummitAugen Hhhhhm,_'lexical_cast'_跳到这里有用吗? –