数値を文字列に変換するには、C では sprintf() を用いるのが便利だ が、C++ では ostrstream クラスを利用する。
test-strstream1.C -- これは反則? |
#include <iostream.h> #include <strstream.h> int main() { int N; double x, err; ostrstream ost; N = 123; x = 1.234; err = 1.2e-34; ost.form("N=%2d,x=%f,err=%e", N, x, err); cout << ost.str() << endl; } |
test-strstream2.C |
// test-strstream1.C #include <iostream.h> #include <iomanip.h> #include <strstream.h> int main() { int N; double x, err; ostrstream ost; N = 123; x = 1.234; err = 1.2e-34; ost << "N=" << setw(2) << N << ",x=" << setiosflags(ios::fixed) << x << ",err=" << setiosflags(ios::scientific) << err; cout << ost.str() << endl; } |
test-strstream.out |
mathpc00% ./test-strstream1 N=123,x=1.234000,err=1.200000e-34 mathpc00% ./test-strstream2 N=123,x=1.234000,err=1.2e-34 mathpc00% |