0

我的 IDE 最后一行的“文件名”变量存在问题。有人可以指出我为什么吗?

    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);
4

2 回答 2

4

我的水晶球今天有点阴天,但我想我能看到一些东西……

<psychic-powers>
filename的声明为std::string filename;. 遗憾的是,在 C++03 中,std::(i|o)fstream类没有接受变量的构造函数std::string,只有接受变量char const*的构造函数。

解决方案:通过filename.c_str()
</psychic-powers>

于 2012-02-10T02:07:11.967 回答
1

假设文件名的类型是std::string,那么你不能将它直接传递给 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 语句

于 2012-02-10T02:09:46.790 回答