matlabでファイル名にインデックスをつけて出力したい場合,
filename = sprintf('hogehoge%03d.pgm',i); imwrite(uint8(img),filename,'pgm');
と書く,一方C++では
char filename[100]; sprintf(filename,"hogehoge%03d",i); 〜
という感じ.本日,うっかり間違えた.なお,sprintfはfilenameに格納された文字数+1をint型で返すみたい.
matlabだと ' ' で文字列(文字)を囲むのだが,C++では " " である.これもうっかり間違えた.C++の場合は ' ' では文字, " " で囲むことで文字列の先頭アドレスを返し,char型ポインタを引数として利用している(はず).Matlabの場合は,よくわからない.Matlabの内部の構造とか処理の方法とか,全然しらない.実験できればいいんだよ,といういい加減さ.
あと,C++では配列の先頭ポインタを渡す方法として、添字を指定せずに配列名を使う,次のような書き方があったような.
〜 char arr[100] = "test"; printf("%s\n",arr) ; arr[] = "test2"; printf("%s\n",arr) ; 〜
これは添字を指定しないことで配列の先頭アドレスを渡している(うろ覚え).stringを使った方が変なミスをせずにすみそうだが.
あと,char型の配列を宣言するときに,配列数を指定せずに
char filename[]; 〜
と書いたらコンパイラに怒られた.CもC++も全然使って無いのでわすれまくっている.MatlabのCell感覚でやってしまった.C++の場合は領域を確保してからでないとダメ.添字なしで宣言するのは,宣言時に初期化するときのみか.
char filename[] = "hogehoge";