示例代碼
#include <boost/lexical_cast.hpp> int main() { using namespace boost; int x = lexical_cast<int>("100"); long y = lexical_cast<long>("2000"); float pai = lexical_cast<float>("3.14159e5"); double e = lexical_cast<double>("2.71828"); cout<< x << y << pai << e << endl; string str = lexical_cast<string>(456); cout<<str<<endl; cout<<lexical_cast<string>(0.618)<<endl; cout<<lexical_cast<string>(0x10)<<endl; }異常bad_lexical_cast 當lexical_cast無法執行轉換操作時會拋出異常bad_lexical_cast。我們可以利用bad_lexical_cast來驗證數字符串的合法性,實現一個模板函數num_valid()的代碼如下:
template<typename T> bool num_valid(const char* str) try { lexical_cast<T>(str); return true; } catch(bad_lexical_cast&) { return false; };應用于自己的類
示范
class demo_class{ friend std::ostream& Operator<<(std::ostream& os, const demo_class& x) { os<<"demo_class's Name"; return os; }};int main(){ cout << lexical_cast<string>(demo_class())<<endl;}模板類 輸出類名
template<typename T> struct outable { friend std::ostream& operator<<(std::ostream& os, const T& x) { os <<typeid(T).name(); return os; } }; class demo_class:outable<demo_class>{}; int main() { cout<<lexical_cast<string>(demo_class())<<endl; }新聞熱點
疑難解答