2011/05/10

c++で文字列から数値に変換

c++でstd::istringstreamを使用して文字列から数値に変換するプログラムです。
templateを使用しているので、様々な型で変換できます。


  1. #include <iostream>  
  2. #include <string>  
  3. #include <iomanip> // setprecision  
  4. #include <sstream>  
  5.   
  6. using namespace std;  
  7.   
  8. //! 文字列から値に変換します。  
  9. template < typename T > T convert( const std::string & str )  
  10. {  
  11.  std::istringstream istream( str );  
  12.  T type = 0;  
  13.   
  14.  if ( !str.empty())  
  15.  {  
  16.   istream >> type;  
  17.  }  
  18.  cout << type << endl;  
  19.  return type;  
  20. };  
  21.   
  22. int main()  
  23. {  
  24.  unsigned long val = convert< unsigned long >( "12345678901" );  
  25.  cout << val << endl;  
  26.   
  27.  long double tmp = convert< long double >( "123.45678" );  
  28.  cout << setprecision( 10 ) << tmp << endl;  
  29.  return 0;  
  30. }  

28行目のcoutでsetprecisionで有効桁数を指定しないと、小数点4桁目(環境によります)が四捨五入されて表示されます。
(指定し忘れてて、はまりました。。)

0 コメント:

コメントを投稿

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates