C ++ Primer Plus从文件中读取

时间:2015-02-12 11:50:44

标签: c++ file input

我从C ++ Primer Plus书中做了第6章的第9次练习,而且,我从文件中读取时遇到了一些问题。 运算符>> getline 一定有问题,但我不知道该怎么做,以及如何处理。 如果有人能告诉我在这种情况下应该做些什么,我将非常感激。

以下是练习:

  

编程练习6,但修改它以从文件中获取信息。首先   文件中的项目应该是贡献者的数量,文件的其余部分应该是   由成对的行组成,每对的第一行是贡献者的名字   第二行是贡献。也就是说,文件应如下所示:   4   山姆斯通   2000   Freida Flass   100500   Tammy Tubbs   5000   Rich Raptor   55000

文件" Contribution.txt"包含与练习中相同的名称和值。输出是,它显示4x没有名字和$ 0.

以下是代码

    #include <iostream>
#include <fstream>  //file I/O support
#include <cstdlib>  //support for exit()
#include <string>

std::string name;

double contr;

int content;
int i=0;

int main()
{
    std::ifstream inFile;    // object for handling file input
    inFile.open("Contribution.txt");
    if (!inFile.is_open()) // failed to open file
    {
        std::cout <<"Could not open the file \"Contribution.txt\""<<std::endl;
        std::cout <<"Programing terminating.\n";
        exit(EXIT_FAILURE);
    }
    inFile>>content;
    if(inFile.good())
    {
        while(i<content)
        {
            getline(inFile,name);   //saves the line in string name
            inFile>>contr;  //saves value in double contr

            std::cout<<name<<std::endl;
            std::cout<<"$"<<contr<<std::endl;
            i++;
        }
    }
    if(inFile.eof())
        std::cout<<"End of file reached.\n"<<std::endl;
    else if(inFile.fail())
        std::cout<<"Input terminated by data mismatch.\n";
    else
        std::cout<<"Input terminated for unknown reason.\n";

    inFile.close();


    return 0;
}

完成后返回:

  

输入因数据不匹配而终止

0 个答案:

没有答案