簡體   English   中英

嘗試從文件讀取時設置Failbit - 為什么?

[英]Failbit set when trying to read from file - why?

我正在嘗試編寫一個自動格式化XML-Strings的函數; 但是當我嘗試從文件中讀取文本並將其寫入另一個文件時,我已經失敗了。

當我使用我的函數sortXMLString()時

bool FormatXML::sortXMLString()
{
    string XMLString;
    ifstream fin("input.txt");
    fin.open("input.txt", ios::in);
    ofstream fout("output.txt");
    fout.open("output.txt", ios::out);
    if (fin.is_open() && fout.is_open())
    {
        if (fin.good()) cout << "good" << endl;
        if (fin.fail()) cout << "fail" << endl;
        if (fin.bad()) cout << "bad" << endl;
        while (getline(fin, XMLString))
        {
            //TODO: Formatting
            fout << &XMLString << endl;
        }
        fin.close();
        fout.close();
    }
    else return false; 
    return true;
}

我將輸出“失敗”,但該函數永遠不會進入while循環。 該函數返回true。 無論我寫入input.txt(單個字母,單個數字,多行文本甚至沒有)都無關緊要,在getline甚至可以達到之前,始終會設置failbit。 為什么這個/我怎樣才能正確讀出我的文件?

ifstream fin("input.txt"); 將使用fin打開文件作為流對象為什么再次調用open成員函數? 同樣也適用於fout對象。

在已打開的流上調用open失敗,這意味着failbit標志設置為true。

打開一次

ifstream fin("input.txt");
ofstream fout("output.txt");

暫無
暫無

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

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