文字列をuint64_t整数に変換しようとしています。 stoi
は32ビット整数を返すため、私の場合は機能しません。他の解決策はありますか?
試しましたか
uint64_t value;
std::istringstream iss("18446744073709551610");
iss >> value;
?
Live Demo を参照してください
これは、古い標準でも機能する場合があります。
std::stoull
C++ 11以降を使用している場合。
この投稿 も役立つかもしれません。他の質問はCに関するものなので、私はこれを重複としてマークしませんでした。
ブーストを使用している場合は、 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;
}
C++ 11以降を使用している場合は、< cstdlib >からstrtoull()を使用できます。そうでなければ、c99でもこれが必要な場合は、Cから stdlib.h のstrtoull()関数を使用できます。
次の例をご覧ください
#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";
}