ページ 1 / 1
C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月11日(火) 01:54
by ghffmj
txtファイルに小数を書き込んでいるのですが、小数点以下の桁数を合わせたいと思っています。
C言語では簡単に%.5fのようにしてやればできましたが、C++ではどうすればよいのでしょうか?
ostreamを用いています。fprintfを用いればできるのでしょうが、ostreamを用いて行いたいです。
よろしくお願いします。
Re: C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月11日(火) 03:03
by かずま
コード:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << 3.14159265358979 << endl; // "%.6g"
cout.precision(5);
cout << 2.718281828 << endl; // "%.5g"
cout.setf(ios::fixed, ios::floatfield);
cout << 2.718281828 << endl; // "%.5f"
// manipulator を使う方法
cout << setprecision(3)
<< resetiosflags(ios::floatfield)
<< setiosflags(ios::scientific)
<< setw(12)
<< 3.14159265 << endl // "%12.3e"
<< 3.14159265 << endl; // "%.3e"
}
setw() は 1回使用されると、元に戻ります。
setprecision() などは、設定がずっと有効で、何度でも使用されます。
Re: C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月11日(火) 03:56
by ghffmj
回答ありがとうございます。できました!
setf(ios::fixed, ios::floatfield)を使う必要があるのですね。precisionを使うというのは分かったのですが、これだけだと思うようにいかずに困っていました。
また疑問が芽生えてしまったのですが、マニピュレータを用いずに、%9.6fのようなことはできますか?
また、メンバ関数を使って設定した場合、ずっと効果が続くようですが、リセットするにはどうすればよいのでしょうか?
Re: C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月11日(火) 05:22
by へにっくす
少しは調べましょうね。
D.9 書式付き出力
ghffmj さんが書きました:リセットするにはどうすればよいのでしょうか?
リセットに該当するものはないような。。
setfの逆、unsetfはあるので、これで解除してみればどうかと
Re: C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月13日(木) 00:29
by ghffmj
かずまさん、へにっくすさんありがとうございました。
Re: C++で"%.5f"のようにフォーマットを指定する方法
Posted: 2012年9月13日(木) 07:50
by beatle
標準ライブラリではありませんが、boost::formatは如何でしょうか。
または sprintf と ostream を併用するとか。