c++ 出力ファイル名

解決


えんぴっつ  2012-04-25 21:49:08  No: 73349  IP: 192.*.*.*

c++ 初心者 です。

c++ のプログラムで、for 文やwhile文の中に出力させる文章を置いて、出力されるファイル名をforやwhileの変数に関連ずけるには、どういったものを書けばよいでしょうか?

たとえば、以下のようなプログラムを書いて実行すると、"test"という文が書かれた"1"というファイル名のファイルが出力されます。

/ / / / / / / / / / / / / / / / / / /
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ofstream of;
of.open("1", ios::app);
of << "test" << endl;
of.close();
return 0;
}
/ / / / / / / / / / / / / / / / / / /

上のプログラムの中の出力ファイル名は"1"ですが、これをfor文等のループの中で"1"〜"10"として10個のファイルを出力したいです。

以下のように書くと、"i"というファイルに"test"という文字が10個書き込まれます。

/ / / / / / / / / / / / / / / / / / /
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
int i;
ofstream of;
    for(i=0; i<=10; i++) {
       of.open("i", ios::app);
       of << "test" << endl;
       of.close();
}
return 0;
}
/ / / / / / / / / / / / / / / / / / /

上のプログラムの中の"i"のクオーテーションマーク""をとって

of.open(i, ios::app);

のように書いたらエラーでコンパイルできません。また、

of.open((char*) i, ios::app);

のように書くとコンパイルはできますが、ファイルができません。

ファイル名"1"に"test"
ファイル名"2"に"test"
ファイル名"3"に"test"



ファイル名"10に"test"

という風に出力できればいいのですが...


わかる方すみませんが、ご指導願います

編集 削除
επιστημη  URL  2012-04-25 22:03:33  No: 73350  IP: 192.*.*.*

こんなんでいいのかしら

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main() {
  for ( int i = 0; i <= 10; i++) {
    ostringstream name;
    name << i;
    ofstream file(name.str().c_str());
    file << "test" << endl;
  }
}

編集 削除
瀬戸っぷ  2012-04-25 23:41:50  No: 73351  IP: 192.*.*.*

http://oshiete.goo.ne.jp/qa/7438632.html

こちらの質問を転載しているようですな。
転載している時点で既に回答付いていたりはしますが。

編集 削除
επιστημη  URL  2012-04-26 06:03:45  No: 73352  IP: 192.*.*.*

↑貰った回答に誤りがあるんで満足できなかったのかな。

編集 削除
えんぴっつ  2012-04-26 09:17:36  No: 73353  IP: 192.*.*.*

>επιστημηさん
    ありがとうございます。できました。sstreamをincludeして使うのですね。早速このあたりのことをもっと勉強しておきます。

>瀬戸っぷさん
    すみません、質問のところにリンクを貼りませんでした。以後気をつけます。あちらで質問したときに頂いた回答では、まだ勉強不足のせいもありわからなかったので、こちらで再質問させて頂きました。

編集 削除