我正在尝试编写一个自动格式化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;
}
我将得到输出&#34;失败&#34;,但该功能永远不会进入while循环。该函数返回true。 我写入input.txt(单个字母,单个数字,多行文本甚至没有)的内容并不重要,在getline甚至可以达到之前,将始终设置failbit。 为什么这个/我怎样才能正确读出我的文件?
答案 0 :(得分:6)
ifstream fin("input.txt");
会以fin
作为流对象打开文件,为什么再次调用open
成员函数?同样适用于fout
对象。
在已打开的流上调用open
失败,这意味着failbit
标志设置为true。
只需打开一次
ifstream fin("input.txt");
ofstream fout("output.txt");