使用ifstream从文本文件中读取

时间:2011-05-09 18:12:43

标签: c++

我正在尝试使用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 ;
}

此代码中是否有任何错误?

3 个答案:

答案 0 :(得分:1)

我怀疑你上面提到的程序是否是你的。因为我在一本关于文件处理的电子书中发现了你的类似问题。我在这里提供链接,您可以参考它并根据需要更正您的程序。

file processing.pdf

答案 1 :(得分:0)

那些ends操纵者在那里做什么?我猜你应该输出空格。调试它的显而易见的方法是编写仅创建输出文件的代码,然后通过使用文本编辑器检查输出来查看它是否有效。

答案 2 :(得分:0)

它可能不会阅读,因为它可能不是在写。当你要求输入时,你没有指定输入到控制台窗口的内容,但如果你没有以

的格式输入输入
integer string double

然后什么都不写入文件,因为cin<<将尝试获取某种类型并因为数据与它想要的类型不匹配而失败。