2012-02-10 6 views
0

私のIDEは最終行の "filename"変数に問題があります。誰かがなぜ私に指摘できますか?あなたのfilename ofstream variable.openは、所定の文字列変数をサポートしていますか?

<psychic-powers>

std::string filename;として宣言されています...

switch(filename_selection) 
    { 
     case 1: filename_selection = 1; 
     filename = "foo3.sql"; 
     break; 

     case 2: filename_selection = 2; 
     filename = "foo2.sql"; 
     break; 

     case 3: filename_selection = 3; 
     filename = "foo1.sql"; 
     break; 

     default: 
     cout << "Invalid selection." << endl; 
     break; 
    } 
    ofstream File; 
    File.open(filename, ios::out | ios::trunc); 
+1

*何が問題なのですか?そしてあなたの 'filename'はどのように定義されていますか? – Xeo

+0

また、 'filename_selection'を既に指定したものに再割り当てする特定の理由はありますか? – Xeo

+0

ルーキーミス、本当に。これを読んでください。 – Switchkick

答えて

4

私の水晶玉は少し曇って、今日ですが、私は私が何かを見ることができると思います。悲しいことに、C++ 03ではstd::(i|o)fstreamクラスにはstd::stringという変数を受け入れるコンストラクタはなく、char const*個しかありませんでした。

ソリューション:filename.c_str()を渡してください。 ファイル名がタイプのstd ::文字列であると仮定すると
</psychic-powers>

+0

それは働いた!あなたは神秘的な知覚の力が不思議です! – Switchkick

1

、あなたはofstreamのコンストラクタに直接渡すことはできません。あなたはc_str()の電力を必要と

switch(filename_selection) 
{ 
    case 1: 
    //filename_selection = 1; WHAT IS THIS? 
    filename = "foo3.sql"; 
    break; 

    case 2: 
    ///filename_selection = 2; ??? 
    filename = "foo2.sql"; 
    break; 

    case 3: 
    ///filename_selection = 3; ??? 
    filename = "foo1.sql"; 
    break; 

    default: 
    cout << "Invalid selection." << endl; 
    break; 
} 
ofstream File; 
File.open(filename.c_str(), // <<< 
      ios::out | ios::trunc); 

また、switch statementの使い方を誤解しているようです。

+0

チップをありがとう! – Switchkick

関連する問題