#include
"
stdafx.h
"
using namespace std;
using boost::lexical_cast;
using boost::bad_lexical_cast;
using boost::numeric_cast;
using boost::bad_numeric_cast;
template < class T >
bool IsValid( const string & num){
bool flag = true ;
try {
T temp = lexical_cast < T > (num);
}
catch (CFileException * e){
flag = false ;
}
return flag;
}
using std::endl;
int _tmain( int argc, _TCHAR * argv[])
{
string s = " 6.02e-2 " ;
try {
cout << lexical_cast < double > (s) << endl;
// cout<<lexical_cast<int>(s)<<endl;
} catch (bad_lexical_cast & e){
cerr << e.what() << endl;
}
try {
int i = 32767 ;
short s = numeric_cast < short > (i);
cout << s << endl;
i ++ ;
s = i; // 发生上溢
cout << s << endl; // 输出-32768
s = numeric_cast < short > (i); // 抛出异常
int n =- 3 ;
unsigned int m = n; // 发生下溢
cout << m << endl; // 输出4294967293
m = numeric_cast < unsigned int > (n); // 抛出异常
}
catch (bad_numeric_cast & e){
cerr << e.what() << endl;
}
return 0 ;
}
using namespace std;
using boost::lexical_cast;
using boost::bad_lexical_cast;
using boost::numeric_cast;
using boost::bad_numeric_cast;
template < class T >
bool IsValid( const string & num){
bool flag = true ;
try {
T temp = lexical_cast < T > (num);
}
catch (CFileException * e){
flag = false ;
}
return flag;
}
using std::endl;
int _tmain( int argc, _TCHAR * argv[])
{
string s = " 6.02e-2 " ;
try {
cout << lexical_cast < double > (s) << endl;
// cout<<lexical_cast<int>(s)<<endl;
} catch (bad_lexical_cast & e){
cerr << e.what() << endl;
}
try {
int i = 32767 ;
short s = numeric_cast < short > (i);
cout << s << endl;
i ++ ;
s = i; // 发生上溢
cout << s << endl; // 输出-32768
s = numeric_cast < short > (i); // 抛出异常
int n =- 3 ;
unsigned int m = n; // 发生下溢
cout << m << endl; // 输出4294967293
m = numeric_cast < unsigned int > (n); // 抛出异常
}
catch (bad_numeric_cast & e){
cerr << e.what() << endl;
}
return 0 ;
}