Ответ 1
Ты пробовал
uint64_t value;
std::istringstream iss("18446744073709551610");
iss >> value;
?
Посмотреть демо-версию
Это может работать и для устаревших стандартов.
Я пытаюсь преобразовать из строки в целое число uint64_t. stoi
возвращает 32-битное целое число, поэтому в моем случае это не сработает. Существуют ли другие решения?
Ты пробовал
uint64_t value;
std::istringstream iss("18446744073709551610");
iss >> value;
?
Посмотреть демо-версию
Это может работать и для устаревших стандартов.
Попробуйте std::stoull
если вы используете С++ 11 или выше.
Этот пост также может помочь. Я не пометил это как дубликат, потому что другой вопрос касается C.
Если вы используете boost, вы можете использовать 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);
cout << num << endl;
return 0;
}
Живой пример: http://coliru.stacked-crooked.com/a/c593cee68dba0d72
Вы можете использовать strtoull() из & lt;cstdlib>, если вы используете С++ 11 или новее. Иначе, если вам это нужно и с c99, вы можете перейти к функции strtoull() в stdlib.h из C.
Смотрите следующий пример
#include <iostream>
#include <string>
#include <cstdlib>
int main()
{
std::string value= "14443434343434343434";
uint64_t a;
char* end;
a= strtoull( value.c_str(), &end,10 );
std::cout << "UInt64: " << a << "\n";
}