[英]Using boost::lexical_cast with arithmetic expressions
我有一個帶算術的輸入文件(ASCII),例如
TEST;0.0;0.0+0.1;0.0+0.2
我可以讀取字符串並相應地對其進行拆分,因此我已經有了std::string
元素。 現在,我想使用boost::lexical_cast<double>
將其存儲在double中,類似於以下表達式:
double d = boost::lexical_cast<double>("0.0+0.1");
但是,助推器拋出
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast> >'
what(): bad lexical cast: source type value could not be interpreted as target
是否有個不錯的路要走,也許沒有sscanf
? (如果sscanf
完全能夠做到這一點...)
TIA
boost::lexical_cast
不是解析器/計算器。 您可以使用Boost.Spirit來做到這一點。 關於如何實現這樣一個計算器,有一個O'Reilley的示例 ,但是正如您所看到的那樣,它不是直截了當的。
問題如果您想實現一個簡單的解析器, OpenSouce C / C ++數學表達式解析器庫和評估C ++中的算術表達式可能是一個很好的起點。
如果字符串中有算術運算符,則可以再次拆分字符串,對兩個子字符串進行強制轉換,然后進行算術運算。
我不認為boost :: lexical_cast或類似的東西會這樣做或打算這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.