gpt4 book ai didi

c++ - 错误: no match for call to ‘(std::fstream {aka std::basic_fstream}) (const char*)’ Not fixed by c_str()

转载 作者:行者123 更新时间:2023-12-02 11:11:46 24 4
gpt4 key购买 nike

我为操作系统类(class)分配了一个作业,该作业应该使我们熟悉C++(我们的部门不在入门级授课)。在项目中,我们必须读取文件。我试图创建一个名为FileIO的类,该类可以处理大部分文件读取,它只需要传递给它的文件名即可。但是,当我尝试像knightFile(knightFileName.c_str())一样初始化它时,编译器给我标题中的错误。有人知道发生了什么吗?

我尝试过的大多数操作是使用c_str将文件名转换为c字符串。但是我仍然遇到相同的错误。

FileIO::FileIO()
{
knightFile (knightFileName.c_str());
castleFile (castleFileName.c_str());
knightFileName = "Knight";
castleFileName = "Castle";
}

//All of the above variables are declared in the header file. knightFile
//and castleFile are fstreams and knightFileName and castleFileName are
//strings.

最佳答案

您需要首先分配您的string成员,然后可以将它们传递给fstream::open()方法:

FileIO::FileIO()
{
knightFileName = "Knight";
castleFileName = "Castle";

knightFile.open(knightFileName.c_str());
castleFile.open(castleFileName.c_str());
}

否则,请摆脱 string成员,并在构造函数的成员初始化列表中调用 fstream构造函数:

FileIO::FileIO() :
knightFile ("Knight"),
castleFile ("Castle")
{
}

关于c++ - 错误: no match for call to ‘(std::fstream {aka std::basic_fstream<char>}) (const char*)’ Not fixed by c_str(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com