簡體   English   中英

在算法表達式中使用boost :: lexical_cast

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM