2017-02-21 5 views

Antwort

6

Haben Sie versucht,

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

machen?

Siehe Live Demo


dass auch für veraltete Standards arbeiten kann.

5

Versuchen Sie std::stoull, wenn Sie C++ 11 oder höher verwenden.

This post kann auch hilfreich sein. Ich habe nicht diese als Duplikat markieren, weil die andere Frage zu C ist

+0

Nun, C++ 11 kann seit einigen Jahren als aktueller Standard angesehen werden. –

+1

Es ist * a * Standard, aber nicht ** DER ** Standard. Es gibt immer noch eine Menge Leute, die mit C++ 03 arbeiten, wegen der Arbeit oder altem Code oder aus irgendeinem Grund. – Gambit

+0

Sicher ** DER ** Standard ist C++ 14? –

2

Wenn Sie Boost verwenden, könnten Sie von 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

Ich benutze keine Boost – Cauchy

+2

Noch eine nützliche Antwort, könnte der nächste Leser. –

+0

@BaummitAugen Hhhhhm, wie springt _lexical_cast__ hier ein? –

Verwandte Themen