質問
Cのフォーマット出力の手法について
C言語で計算したデータをテキスト出力したいのですが、
今printf系とboost::formatでなんとかできそうです。
が、やはりみなさんも出力するとしたらこうやるものでしょうか?
書き方がまどろっこしいというか
ほかの手法があれば、教えてください。
こうやるものでしょうか?
と
ほかの手法
が質問です。
目的はフォーマット化されたテキストデータ(string型)で、
printfの様なスッキリしたものかつ
srpintfはワンクッション
sprintf(strTmp,"・・・
str+=strTmp;がいたい。二行かかる。一行表示でもよいが一行当たりセミコロンが二つあり。
boost::formatは結構ひどい一行でかけるが。
str+=(boost::format("id・・・d3).str();
スマートな方法があればご伝授ください。
下記のような(ユニオンさまお借りします。)
http://www.unions.co.jp/service/structu ... les/06.pdf
のようなテキスト出力を考えています。
以下のコードは値はへんですが、コードを出します。
double d1=100.5,d2=2000.251,d3=20.2515;
printf("printfで直接出力する場合\n");
for(int i=0;i<5;i++){
d1=(i+5)*d1;
d2=(i+5)*d2;
d3=(i+5)*d3;
printf("id=%2d : d1=%15.2f d2=%15.2f d3=%15.2f\n",i,d1,d2,d3);
}
printf("std::stringに文字列を貯める場合でsprintfの場合\n");
d1=100.5;d2=2000.251;d3=20.2515;
std::string str="";
char strTmp[1024];
for(int i=0;i<5;i++){
d1=(i+5)*d1;
d2=(i+5)*d2;
d3=(i+5)*d3;
sprintf(strTmp,"id=%2d : d1=%15.2f d2=%15.2f d3=%15.2f\n",i,d1,d2,d3);
str+=strTmp;
}
printf(str.c_str());//str::stringをとりあえずコンソールへ書き出す。目的はstring型のデータ
printf("std::stringに文字列を貯める場合でboostの場合\n");
d1=100.5;d2=2000.251;d3=20.2515;
for(int i=0;i<5;i++){
d1=(i+5)*d1;
d2=(i+5)*d2;
d3=(i+5)*d3;
str+=(boost::format("id=%2d : d1=%15.2f d2=%15.2f d3=%15.2f\n")% i% d1% d2% d3).str();
}
printf(str.c_str());//str::stringをとりあえずコンソールへ書き出す。目的はstring型のデータ