我正在尝试使用ifstream对象和提取运算符(>>)从文本文件中读取,当我执行以下代码时,它根本就不读取!
#include <iostream>
#include <fstream>
#include <iomanip>
void outputLine( int account, const char *const name , double balance )
{
cout << left << setw( 10 ) << account << setw( 13 ) << name
<< setw( 7 ) << setprecision( 2 ) << right << balance << endl;
} // end function outputLine
int main()
{
ofstream outfile("client.txt",ios::out);
if (!outfile)
{
cout << "the file is not opened .. " << endl ;
exit(1);
}
int account;
char name[30];
double balance;
while (cin >> account >> name >> balance)
{
outfile << account << ends << name << ends << balance << endl ;
cout << "? " ;
}
outfile.close();
ifstream inFile;
inFile.open( "client.txt",ios::in);
if ( !inFile )
{
cerr << "File could not be opened" << endl;
exit( 1 );
} // end if
cout << left << setw( 10 ) << "Account" << setw( 13 )
<< "Name" << "Balance" << endl << fixed << showpoint;
while (inFile >> account >> name >> balance )
{
outputLine( account, name, balance );
}
return 0 ;
}
此代码中是否有任何错误?
答案 0 :(得分:1)
我怀疑你上面提到的程序是否是你的。因为我在一本关于文件处理的电子书中发现了你的类似问题。我在这里提供链接,您可以参考它并根据需要更正您的程序。
答案 1 :(得分:0)
那些ends
操纵者在那里做什么?我猜你应该输出空格。调试它的显而易见的方法是编写仅创建输出文件的代码,然后通过使用文本编辑器检查输出来查看它是否有效。
答案 2 :(得分:0)
它可能不会阅读,因为它可能不是在写。当你要求输入时,你没有指定输入到控制台窗口的内容,但如果你没有以
的格式输入输入integer string double
然后什么都不写入文件,因为cin<<
将尝试获取某种类型并因为数据与它想要的类型不匹配而失败。