0
有沒有在C++或Boost中解析一個數字(unsigned long long
,如果可能的話),它可以直接在wstring
迭代器上工作?它應該像std::stoull
一樣快。是否有一個用於迭代器的數字解析函數?
有沒有在C++或Boost中解析一個數字(unsigned long long
,如果可能的話),它可以直接在wstring
迭代器上工作?它應該像std::stoull
一樣快。是否有一個用於迭代器的數字解析函數?
Boost.Spirit有一個iterator-based API。從我讀過的應該比標準字符串轉換函數更快。
#include <iostream>
#include <string>
#include <boost/spirit/include/qi.hpp>
int main()
{
namespace qi = boost::spirit::qi;
std::wstring s(L"4398046511104");
unsigned long long n = 0;
qi::parse(begin(s), end(s), qi::ulong_long, n);
std::cout << n << std::endl;
}
一個簡單的循環就行了。將結果設置爲'0ULL'。檢查迭代器是否引用一個數字。如果是,則將結果乘以10,將數字「0」映射到「9」到範圍「0」到「9」,並相加。遞增迭代器。重複,直到達到非數字或結束迭代器。如果這是在一個函數中完成的,它可能不會超過5行。 – Peter