第六章编程题
(8)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std ;
int main()
{
ifstream inFile ;
string filename ;
cout << "Enter the file name: " ;
cin >> filename ;
inFile.open(filename) ;
if(!inFile.is_open())
{
cout << "Could not open the file " << filename << ".\n" ;
cout << "Program terminating..." << endl ;
exit(EXIT_FAILURE) ;
}
char ch ;
int count = 0 ;
inFile >> ch ;
while (inFile.good())
{
count ++ ;
inFile >> ch ;
}
if (inFile.eof())
cout << "This file has " << count << " characters.\n" ;
inFile.close() ;
return 0 ;
}
顺带说一句,在Ubuntu的文件中,哪怕只写一行且不敲回车键,还是有换行符存在的
(9)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std ;
ifstream inFile ;
const int NameSize = 30 ;
struct Contributor
{
char name[NameSize] ;
double money ;
} ;
int main()
{
string filename ;
cout << "Enter the file's name: " ;
cin >> filename ;
inFile.open(filename) ;
if (!inFile.is_open())
{
cout << "File " << filename << " doesn't exit.\n" ;
cout << "Program terminating...\n" ;
exit(EXIT_FAILURE) ;
}
int population ;
inFile >> population ;
inFile.get() ;
Contributor * volunteer = new Contributor[population] ;
for (int i=0; i<population; i++)
{
inFile.get(volunteer[i].name, NameSize).get() ;
inFile >> volunteer[i].money ;
inFile.get() ;
}
cout << "Grand Patrons:\n" ;
for (int i=0; i<population; i++)
{
if (volunteer[i].money > 10000)
{
cout << volunteer[i].name << endl ;
cout << volunteer[i].money << endl ;
volunteer[i].money = 0 ;
}
}
cout << "\nPatrons:\n" ;
for (int i=0; i<population; i++)
{
if (volunteer[i].money)
{
cout << volunteer[i].name << endl ;
cout << volunteer[i].money << endl ;
}
}
inFile.close() ;
delete [] volunteer ;
}