1、字符串->数值
C++代码
1 #include <boost/lexical_cast.hpp> 2 #include <iostream> 3 int main() 4 { 5 using boost::lexical_cast; 6 int a = lexical_cast<int>("123"); 7 double b = lexical_cast<double>("123.12"); 8 std::cout<<a<<std::endl 9 std::cout<<b<<std::endl; 10 return 0; 11 }
2、数值->字符串
C++代码
1 #include <boost/lexical_cast.hpp> 2 #include <string> 3 #include <iostream> 4 int main() 5 { 6 using std::string; 7 const double d = 123.12; 8 string s = boost::lexical_cast<string>(d); 9 std::cout<<s<<std::endl; 10 return 0; 11 }
3、异常
如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。
C++代码
1 #include <boost/lexical_cast.hpp> 2 #include <iostream> 3 int main() 4 { 5 using std::cout; 6 using std::endl; 7 int i; 8 try 9 { 10 i = boost::lexical_cast<int>("xyz"); 11 } 12 catch(boost::bad_lexical_cast& e) 13 { 14 cout<<e.what()<<endl; 15 return 1; 16 } 17 cout<<i<<endl; 18 return 0; 19 }
显然“xyz”并不能转换为一个int类型的数值,于是抛出异常,捕捉后输出“bad lexical cast: source type value could not be interpreted as target”这样的信息。
4、注意事项
lexical_cast依赖于字符流std::stringstream,其原理相当简单:把源类型读入到字符流中,再写到目标类型中,就大功告成。
时间: 2024-10-29 19:07:15