2012-02-01 5 views
0

C++で書きたいファイルを指定できますか?ファイル名を入力してそのファイルに書き込めるようにしたい。私はmyfile.open("example.txt")myfile.open(var)を作るしようとすると、私は大きなエラーを取得...C++でユーザー指定のファイルに書き込む

error: no matching function for call to ‘std::basic_ofstream >::open(std::string&)’ /usr/include/c++/4.2.1/fstream:650: note: candidates are: void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits]

あなたは、この任意の意味をなさないか、私が間違っているのかを説明することはできますか?これはC++を使った私の最初の週なので、これはとてもシンプルだと感じています。 varstd::stringある場合

+0

あなたがそうでない人が詳細に推測残っている、あなたの問題の最小の作業例を掲載します。人々があなたを助けるのを助ける。 – luke

+0

@lukeしました、それは 'myfile.open(" example.txt ")'でした。 – CoffeeRain

+0

は、 'myfile'がどのようなものとして宣言されているのか、またエラーを生成する行であるのかを教えてくれません。このように考えてみましょう。正確な問題があることを示すプログラムの最短バージョンを表示したいと考えています。 – luke

答えて

4

、試してみてください。

myfile.open(var.c_str()); 

エラーは、名前付きテンプレートタイプの精度は、その結晶を明確に役立ちませんが、間違っている正確に何を説明します。 .open()の参照を見てください。ファイル名にはconst char *、別のオプションのmodeパラメータが必要です。あなたが渡しているのはconst char *ではありません。

+0

'error: 'struct std :: string'に 'c_string''という名前のメンバーがありません – CoffeeRain

+1

.c_str()ではなく.c_str()が必要です。 – luke

+0

私の間違いを訂正してくれてありがとう。 strを文字列として自動的に読み込む必要があります。 :D – CoffeeRain

0

varstd::string?その場合は、std::stringを受け取る.open()の亜種が存在しないため、var.c_str()を渡す必要があります。

0

変数はstring,char[]、またはchar*ですか?

myfile.open(var.c_str()); 
0

があります:私は、open()メソッドは、あなたの文字列に.c_str()メソッドを呼び出す必要があると思いますので、あなたがそれを渡すとき、char[]またはchar*だろうCスタイルの文字列を、望んでいると思いますオープンコールの第2パラメータ。それはmyfile.open( "example.txt"、fstream :: out)のようにする必要があります

2

エラーが言うように、パラメータを文字ポインタで一致させようとしていますが、std :: stringは文字ポインタではありません。しかし、std :: string :: c_str()は1を返します。

試してみてください。

myfile.open(var.c_str()); 
0

エラーメッセージは非常に明確です。それは言う:basic_ofstreamクラス(あなたのファイルオブジェクト)は、 "オープン"と呼ばれ、タイプstring(あなたのvar)の単一の引数を取るメンバ関数を持っていません。 stringからconst char *に移動する必要があります。そのためにはvar.c_str()を使用してください。

2

要するに、ファイルを指定して、さまざまな方法で開いたり書き込んだりすることができます。 あなたはfstreamのを使用して、プレーンテキストを書きたい場合は、これは一つの方法である:

一般的に
#include <string> 
#include <fstream> 
int main() 
{ 
    std::string filename = "myfile.txt"; 
    std::fstream outfile; 
    outfile.open(filename.c_str(), std::ios::out); 
    outfile << "writing text out.\n"; 
    outfile.close(); 
    return 0; 
} 
関連する問題