2017-04-08 70 views
0

有沒有在C++或Boost中解析一個數字(unsigned long long,如果可能的話),它可以直接在wstring迭代器上工作?它應該像std::stoull一樣快。是否有一個用於迭代器的數字解析函數?

+0

一個簡單的循環就行了。將結果設置爲'0ULL'。檢查迭代器是否引用一個數字。如果是,則將結果乘以10,將數字「0」映射到「9」到範圍「0」到「9」,並相加。遞增迭代器。重複,直到達到非數字或結束迭代器。如果這是在一個函數中完成的,它可能不會超過5行。 – Peter

回答

1

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; 
} 

Live demo on Coliru.

相關問題