2017-02-21 10 views
2

Я пытаюсь преобразовать из строки в целое число uint64_t. stoi возвращает 32-битное целое число, поэтому оно не будет работать в моем случае. Существуют ли другие решения?C++ преобразовать строку в uint64_t

ответ

6

Пробовали ли вы

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

?

См Live Demo


Это может работать для из стандартов даты тоже.

5

Попробуйте std::stoull, если вы используете C++ 11 или более поздней версии.

This post также может быть полезен. Я не отметить это как дубликат, потому что другой вопрос о С.

+0

Ну, C++ 11 можно считать нынешним стандартом с нескольких лет. –

+1

Это * a * стандарт, но не ** THE ** стандарт. Есть еще много людей, которые работают с C++ 03 из-за работы или устаревшего кода или по любой причине. – Gambit

+0

Несомненно ** Стандарт ** - это C++ 14? –

2

Если вы используете импульс, вы могли бы сделать использование 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'_ прыгать, чтобы быть полезным здесь? –

Смежные вопросы