我从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;
}
完成后返回:
输入因数据不匹配而终止。