1. ホーム
  2. C++

C++ Error no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::string&)

2022-02-12 22:30:22

目次

質問 

説明

解決策


質問 

string filename = "1.txt";  
ifstream fin;  
fin.open(filename);  

上記の文では、以下のようなエラーが発生します。

error: no matching function for call to 'std::basic_ifstream<char>::basic_ofstream(std::string&)

説明します。

<ブロッククオート

std::ofstream  は  std::string  通常、それは  -std=c++11  (gcc、clang)。もし、c++11にアクセスできない場合は  c_str()  の関数を使用します。  std::string  を渡すことができます。  const char *  を  ofstream  コンストラクタを使用します。

また、以下のように  ベン  があります。  指摘  コンストラクタの 2 番目のパラメータに空文字列を使用しています。2 番目のパラメータが空文字列の場合、その型は  ios_base::openmode .

このようにすると、あなたのコードは次のようになります。

ofstream entrada(asegurado); // C++11 or higher


または

ofstream entrada(asegurado.c_str()); // C++03 or below

オリジナルのアドレスです。 住所

解決策

つまり、ここではC++の下位コンパイルバージョンを使っているのですが、ここでの回避策は、.c_str()メソッドを使うことかもしれませんね。

string filename = "1.txt";  
ifstream fin;  
fin.open(filename.c_str());  

もちろん、もう1つの解決策もあり、それは少し低くなります。

cout<<"Enter the file name and path to create the file, e.g., E:/a.txt"<<<endl;
char fileName[10];
cin>>fileName;
ofstream fout(fileName);


著者 エンドレスムーン

前回までのあらすじ C++ソート機能