FileReader issue C++

FileReader issue C++

本文关键字:C++ issue FileReader      更新时间:2023-10-16

关于我之前在这里发布的一个老问题,我问了一个关于FileOpen函数的问题。这个新问题涉及第二部分:FileReader。

我进行了更改,但仍然存在编译器错误。

这是麻烦的代码:

FILE *FileReader(FILE *fname){
    ifstream inputFile;
    inputFile.open(fname);
    if(inputFile){
        string line = "";
        //int num_chars;
        while(getline(inputFile, line)){
            //num_chars = strlen(text) + 1;
            //line = (string *)malloc(sizeof(string)*num_chars)
            int i = 0;
            if(i <= 3 ){
                storString[i] = line;
                storage[i] = atoi(storString[i].c_str());
                i++;
            }
            else{
                string firstTwo = line.substr(0,1);
                const int hex = atoi(firstTwo.c_str());
                setOperations(hex);
                string commandOne = firstTwo.substr(0,0); //first part of command
                string commandTwo = firstTwo.substr(1,1); //second part of command and n-i flags
                string restFlags = line.substr(2,2); //xbpe flags
                rest = line.substr(3);
                int disp = atoi(rest.c_str());
                if(format == "fmt2"){
                    string rOne = line.substr(2,2);
                    int registerOne = atoi(rOne.c_str());
                    string rTwo = line.substr(3,3);
                    int registerTwo = atoi(rTwo.c_str());
                    registerOperation(hex, registerOne, registerTwo);
                    break;
                }
                setFlags(commandTwo, restFlags, disp);
            }
        }
    }
}

输出以下错误:

a1/a1.cpp:在函数FILE* FileReader(FILE*):
中a1/a1.cpp:338:错误:对std::basic_ifstream<char, std::char_traits<char> >::open(FILE*&)的调用没有匹配的函数
/opt/local/bin//lib/gcc/sparc-sun-solaris2.10/3.4.6/../../include/c++/3.4.6/fstream:570:注意:候选为:void std::basic_ifstream<_CharT, _Traits>::open(con st char*, std::_Ios_Openmode)[其中_CharT=char,_Traits=std::char_Traits]

编辑:

查看那些注释掉的行。我也尝试过这些,但不知道如何实现。有人能帮我吗?

inputfile.open()方法需要一个文件名的c样式字符串作为参数;它也可以是一个将该名称存储为值的变量。假设文件名为inputFile.txt,您可以执行以下操作:
inputFile.open("inputFile.txt");

你也可以这样做:

string fileName = "inputFile.txt";
inputFile.open(fileName.c_str());

此外,还有一条关于代码后面部分的注释:不要使用if(inputfile),而是使用is_open()方法。所以,你应该写if(inputfile.is_open())。该方法返回一个布尔值,具体取决于打开文件是否成功。

http://www.cplusplus.com/reference/fstream/ifstream/open/

inputFile.open is being passed a `FILE *` but needs `const char *`

尝试向它传递一个像"some_file.txt"这样的硬编码字符串,或者向它传递实际的const char *