• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c++ 出力ファイル名)

C++プログラムでループの中でファイルを出力する方法

このQ&Aのポイント
  • C++のプログラムで、for文やwhile文の中に出力させる文章を置いて、出力されるファイル名をループの変数に関連づける方法を教えてください。
  • ループの変数としてファイル名を使い、C++のプログラムで複数のファイルを出力する方法を教えてください。
  • C++でファイルを出力する際、ファイル名にループの変数を関連づける方法がわかりません。ご教示いただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>> ご回答頂いたものを"test9.cpp"ファイルに入れて、コンパイル(cyglaunch.exe上でg++ (ファイル名))してみますと、以下のようなエラーメッセージがでてきました。 環境が違うようなので、以下を試してみてください。 g++は触ったことがありませんが、恐らく宣言されている引数の型が違うのでしょう。 of.open(oss.str().c_str(), ios::app);

kinounishimasu
質問者

お礼

度々すみません、記して頂いたようにしましたらできるようになりました。 どうもありがとうございました!

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

FORTRAN77 がそれでいいなら ofstream of[10]; of[0].open(....); of[1].open(....); // 以下略 for (int i = 0; i < 10; ++i) of[i] << "test" << endl; とでもする.

kinounishimasu
質問者

お礼

すみません、度々ご回答ありがとうございます。 もう少しfortran流に考えてみます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

C++ ではなく Fortran だったらどう書きますか? まさか, integer i open(10, file=i) などとは書きませんよね.

kinounishimasu
質問者

お礼

すみません、返事遅れました。 ご回答、ありがとうございます。 そうですね、fortran 77 だと、 ------------------------- open(1,file="1") open(2,file="2") open(3,file="3") ・ ・ open(10,file="10") do 20 i= 1,10 write(i,*) test 20 continue end ------------------------- でできるのですが、C++だと、まだまだ勉強不足でどのようにすればいいのか見当がつきません.. もう少し、自分なりに考えてみますね。

回答No.1

C/C++言語では基本的に文字列と整数が区別されます。 "1"、"i"  →文字列 i →整数 (char*)i →整数をむりやり文字列にキャストした物 ですので、整数を文字列に変換する必要があります。 やり方は色々ありますが一例として。 ----------------------------------------------- #include <iostream> #include <fstream> #include <sstream> using namespace std; int main() {  int i;  ofstream of;  for(i=0; i<=10; i++)  {   ostringstream oss;   oss << i;   of.open(oss.str(), ios::app);   of << "test" << endl;   of.close();  }  return 0; } -----------------------------------------------

kinounishimasu
質問者

お礼

すみません、上に書いた「補足」(↑)は「お礼入力」にするべきでした。。

kinounishimasu
質問者

補足

ご説明、ありがとうございます。返事が遅れてしまい、申し訳ございません。「教えてGoo!」の操作に少々手間取っていました。。 ご回答頂いたものを"test9.cpp"ファイルに入れて、コンパイル(cyglaunch.exe上でg++ (ファイル名))してみますと、以下のようなエラーメッセージがでてきました。 - - - - - - - - - - - - - - - - - - - - - - - - - - $ g++ test9.cpp test9.cpp: In function `int main()': test9.cpp:17: error: no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::_Ios_Openmode&)' /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/fstream:695: note: candidates are: void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>] - - - - - - - - - - - - - - - - - - - - - - - - - - これからこのエラーメッセージを自分なりに検証していきたいと思います。 やり方は色々あるとのことですが、上記に示して頂いた方法を是非使えるようになりたいと思いますので、もし何か訂正箇所がありましたら、度々すみませんが、宜しくお願いします。

関連するQ&A