ppmファイル(画像形式)をディスクに書き込む機能があります。ファイル名を char* 配列として受け取ります。メイン関数では、stringstream と << 演算子を使用してファイル名をまとめました。次に、この結果を ppm 関数に渡します。私はこれが他の場所で議論されているのを見たことがあります.
私が行ったことは以下のコードに示されています。他の人が一時変数を使用して多くのステップで通常行うトリッキーな部分は(char*) (PPM_file_name.str().data())
. これにより、.str() を使用して stringstream PPM_file_name から文字列を抽出し、.data() を使用して実際のコンテンツへのポインターを取得し (これは const char*)、それを通常の (char*) にキャストします。以下のより完全な例。
これまでのところ、次の方法で問題なく動作することがわかりましたが、他の人が一見複雑な方法で何かを行った場合、それはより安全な方法であるため、通常は不安になります. それで、私がここでやっていることは安全で、移植性が高いかどうか誰か教えてもらえますか?
ありがとう。
#include <iostream>
#include <sstream>
#include <stdio.h>
#include <string>
using namespace std;
int main(int argc, char *argv[]){
// String stream to hold the file name so I can create it from a series of other variable
stringstream PPM_file_name;
// ... a bunch of other code where int ccd_num and string cur_id_str are created and initialized
// Assemble the file name
PPM_file_name << "ccd" << ccd_num << "_" << cur_id_str << ".ppm";
// From PPM_file_name, extract its string, then the const char* pointer to that string's data, then cast that to char*
write_ppm((char*)(PPM_file_name.str().data()),"ladybug_vidcapture.cpp",rgb_images[ccd_num],width,height);
return 0;
}