0

私は現在プログラムに取り組んでおり、このエラーが発生しています:

writeOddEven.cpp:35: error: no match for call to ‘(std::ofstream) (const char*, const std::ios_base::openmode&)’

これまでに見たことがなく、オンラインに関する情報が見つからないようです。私のプログラムでは、2 つのファイルのユーザー指定の名前を読み込もうとしています。次に、偶数または奇数に基づいて、ユーザー指定の整数をファイルに入力しようとしています。これまでの私のコードは次のとおりです。

#include <iostream>
#include <fstream> 
#include <string>

using namespace std; 

int main()
{
  string odd_name;    //odd number file name
  string even_name;   //even number file name
  ofstream fout_odd;        //fout for odd file
  ofstream fout_even;       //fout for even file


  //Get file names
  cout<<"Enter name of file for odd integers: ";
  getline(cin, odd_name);
  cout<<"Enter name of file for even intgers: ";
  getline(cin, even_name); 

  //Open files;
  fout_odd(odd_name.c_str(), ios::out);             //*ERROR HERE*
  fout_even(even_name.c_str(), ios::out);           //*ERROR HERE*

...

fout_odd.close();
fout_even.close();

私が考えることができる唯一のことは、「ios::out」の形式に何らかのエラーがあることですが、それを言い換える方法がわかりません。

編集したがって、これらの行の「open()」部分を完全に忘れていました。

  fout_odd(odd_name.c_str(), ios::out);
  fout_even(even_name.c_str(), ios::out);

したがって、次のように読む必要があります。 fout_odd.open(odd_name.c_str(), ios::out); fout_even.open(even_name.c_str(), ios::out);

4

3 に答える 3

0

これらの行を変更します

//Open files;
fout_odd(odd_name.c_str(), ios::out);             //*ERROR HERE*
fout_even(even_name.c_str(), ios::out);           //*ERROR HERE*

//Open files;
fout_odd = ofstream(odd_name.c_str(), ios::out);             
fout_even = ofstream(even_name.c_str(), ios::out);           
于 2013-04-22T00:54:00.170 に答える