簡體   English   中英

FileReader問題C ++

[英]FileReader issue C++

關於我之前在這里發布的一個老問題 ,我問一個關於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) [with _CharT = char,_Traits = std :: char_traits]

編輯:

看到那些注釋掉的行。 我也嘗試過這些,但是不知道如何實現它們。 誰能幫我?

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

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

嘗試將其傳遞為諸如"some_file.txt"的硬編碼字符串,或將其傳遞為實際的const char *

inputfile.open()方法以文件名的c樣式字符串作為參數; 它也可以是將名稱存儲為值的變量。 假設文件名為inputFile.txt,您可以執行以下操作:

inputFile.open("inputFile.txt");

您也可以這樣做:

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

另外,對代碼后面的部分進行注釋:使用is_open()方法代替使用if(inputfile) 因此,您將編寫if(inputfile.is_open()) 該方法返回一個布爾值,具體取決於打開文件是否成功。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM