[英]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.