for(i=0; i<n; i++){
ofstream out[i](i,ios::out);
}
とすると、
定数式が必要です。
配列の初期化には中カッコ ({}) が必要です。
サイズが 0 の配列を割当てまたは宣言しようとしました。
とエラー表示されてしまいます。
色々なサイト、参考書を見てもエラーが改善できませんでした。
どのようにしたら良いですか?
またこのような文は作ることができないのでしょうか??
よろしくお願いします。
こういうことをなさりたいのですか?
// exam.
// ファイルストリームオブジェクトの配列を定義し、
// 要素ごとにそれぞれ異なるファイル名のファイルを開く
const int SIZE = 3;
std::ofstream out[SIZE];
const char* files[SIZE] = { f0.txt, f1.txt, f2.txt };
for( int i = 0; i < SIZE; ++i ){
out[i].open( files[i] );
}
定数式が必要です。
→配列を宣言するなら「要素はいくつですよ」と明言しなくてはなりません。
n個分のofstreamから成る配列なら「ofstream out[n];」というようにしてください。
→このときの「n」はconst int型か、#define した数値か、数値そのもの。
ココを直せば、他の2つのエラーも取れるでしょう。
>>iijimaさん
はい。そのようにしたいと思っています。
でも、iijimaさんのは3つに制限されていますが、
私は3つとか制限しないでキー入力された数(n個)によってファイルを開こうと思ってい
ます。
どのようにしたら無制限にできるでしょうか???
よろしくお願いします。
>>tibさん
返答ありがとうございます。
そのときのnをキー入力された数というのはやはりできないのでしょうか??
new演算子で配列を動的に確保すれば良いのでは。
// exam.
int n;
// nに値を設定
std::ofstream* out = new std::ofstream[n];
...
delete[] out; // メモリ解放を忘れずに!
# こっちの掲示板で続けるのならば、現状をあっちで報告したうえで、
# マルチポスト状態を解消してください。
>>iijimaさん
ありがとうございます。
こちらで続けさせてもらおうと思います。
とりあえずnew演算子で挑戦してみたいと思います。
もしかしたら、ofstreamオブジェクトの配列を用意しなくてもできる処理じゃないかな
ぁ。
// exam.
std::ofstream out;
for( int i = 0; i < n; ++i ){
out.open( xxx ); // xxxはi番目のファイル名
// i番目のデータをxxxファイルに出力
out.close();
}
> もしかしたら、ofstreamオブジェクトの配列を用意しなくてもできる処理じゃないかなぁ。
そーかも。
for( int i = 0; i < n; ++i ){
std::ofstream out( xxx ); // xxxはi番目のファイル名
// i番目のデータをxxxファイルに出力
}
お返事ありがとうございます!!
iijimaさん、επιστημηさんのおっしゃったとおりにしたら、エラーが減りました!
ただ、
std::ofstream out( xxx ); // xxxはi番目のファイル名
のxxxのところを配列などでi番目のファイル名を作ろうとするんですが、
うまくできません(TT)
どのようにしたら良いのでしょうか?
たびたび色々なことを聞いて申し訳ないです。m(__)m
> std::ofstream out( xxx ); // xxxはi番目のファイル名
> のxxxのところを配列などでi番目のファイル名を作ろうとするんですが、
> うまくできません(TT)
どんなファイル名を生成したいかを述べずにただ'うまくできません'と泣き言垂れても
何の手助けもできません。
すみません。自分でも何をどうしたら良いか分からなくて、、、
それから自分でも試行錯誤を繰り返し、
少し妥協はしましたが、自力でなんとかすることが出来ました。
みなさん色々助けていただいてアリガトウございましたm(__)m