我正在尝试编写一个自动格式化XML字符串的函数;但是当我尝试从文件中读取文本并将其写入另一个文件时,我已经失败了。
当我使用函数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;
}
我将获得输出“ fail”,但是该函数从不进入while循环。该函数返回true。不管我在input.txt中写什么(一个字母,一个数字,多行文本,甚至什么都没有),故障位总是在到达getline之前设置。为什么要这样/如何正确读出文件?
ifstream fin("input.txt");
会fin
以流对象打开文件,为什么open
再次调用成员函数?这同样适用于fout
对象了。
调用open
已经打开的流失败,这意味着该failbit
标志设置为true。
只需打开一次
ifstream fin("input.txt");
ofstream fout("output.txt");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句