std::atoll
fromを使用して文字列をgcccstdlib
に変換しています。int64_t
その機能は、Windows ツールチェーン (Visual Studio Express 2010 を使用) では利用できないようです。最良の代替手段は何ですか?
strings
への変換にも興味がありuint64_t
ます。から取得した整数定義cstdint
。
MSVC には _atoi64 と同様の機能があります。こちらを参照してください
符号なし 64 ビット型については、_strtoui64を参照してください。
文字列ストリームを使用 ( <sstream>
)
std::string numStr = "12344444423223";
std::istringstream iss(numStr);
long long num;
iss>>num;
ブースト lexical_cast ( boost/lexical_cast.hpp
)を使用する
std::string numStr = "12344444423223";
long long num = boost::lexical_cast<long long>(numStr);
パフォーマンス テストを実行して、変換がボトルネックであり、非常に高速に実行する必要があると結論付けた場合、準備ができている関数がない場合は、独自の関数を作成することをお勧めします。これは非常に高速に動作しますが、エラー チェックがなく、正の数のみを処理するサンプルです。
long long convert(const char* s)
{
long long ret = 0;
while(s != NULL)
{
ret*=10; //you can get perverted and write ret = (ret << 3) + (ret << 1)
ret += *s++ - '0';
}
return ret;
}
Visual Studio 2013 にはついにstd::atoll
.