2012-02-10 2 views
0

У моей IDE проблемы с переменной "filename" на последней строке. Может кто-нибудь указать мне, почему?Поддерживает ли переменная variable.open заданные строковые переменные?

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

Rookie ошибка, действительно. Читая это. – Switchkick

ответ

4

Мой хрустальный шар немного облачно сегодня, но я думаю, что я могу увидеть что-то ...

<psychic-powers>
Ваш filename объявлен std::string filename;. К сожалению, в C++ 03 классы std::(i|o)fstream не имели конструкторов, принимающих переменные std::string, только char const* единиц.

Решение проблемы: Пройден filename.c_str().
</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

Смежные вопросы