c++でstd::istringstreamを使用して文字列から数値に変換するプログラムです。
templateを使用しているので、様々な型で変換できます。
- #include <iostream>
- #include <string>
- #include <iomanip> // setprecision
- #include <sstream>
- using namespace std;
- //! 文字列から値に変換します。
- template < typename T > T convert( const std::string & str )
- {
- std::istringstream istream( str );
- T type = 0;
- if ( !str.empty())
- {
- istream >> type;
- }
- cout << type << endl;
- return type;
- };
- int main()
- {
- unsigned long val = convert< unsigned long >( "12345678901" );
- cout << val << endl;
- long double tmp = convert< long double >( "123.45678" );
- cout << setprecision( 10 ) << tmp << endl;
- return 0;
- }
28行目のcoutでsetprecisionで有効桁数を指定しないと、小数点4桁目(環境によります)が四捨五入されて表示されます。
(指定し忘れてて、はまりました。。)
0 コメント:
コメントを投稿