はじめに
printf で出力する文字列を変数に代入したいことって良くありますよね!!
ここではsprintf を用いてprintfで出力する文字列を変数に代入します
本題
イメージとして下記のようなことがしたいとします
string s = printf("%06d%06d", tmp1, tmp2);
これを下記のように書き換えることによって printf での出力を代入することができます.
sprintf(s, "%06d%06d", tmp1, tmp2);
もう少し細かく説明していきます.
sprintf は第一引数のchar 型です.
string ではなく char の配列を準備します
(注意: 文字列の最後は '\0' が入るため予定しているサイズより1個大きいサイズを準備してください)
ここまできたら, あとはもう簡単です.
sprintf((char型配列), (いつものprintfの書き方)) で
文字列を代入することができます.
下記はサンプルプログラムです.
exsample.cpp
# include<bits/stdc++.h>
using namespace std;
int main(){
char s[13];
int tmp1=123, tmp2=45;
sprintf(s, "%06d%06d", tmp1, tmp2);
cout << s << endl;
}
exsample_output.txt
000123000045
もちろん多次元配列でも代入できます.
exsample2.cpp
# include<bits/stdc++.h>
using namespace std;
int main(){
char s[3][13];
int tmp1=0, tmp2=0;
for(int i=0; i<3; i++){
tmp1+=2;
tmp2+=3;
sprintf(s[i], "%06d%06d", tmp1, tmp2);
}
for(int i=0; i<3; i++){
cout << s[i] <<endl;
}
}
exsample2_output.txt
000002000003
000004000006
000006000009