Input File Output File include include include include inclu
Input File
Output File
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>
#include <cstdlib>
using namespace std;
int main()
{
const char filename[] = \"C:/temp/fb_scores.txt\";
char buffer[16], winner[32], loser[32];
int winnerScore, loserScore;
ifstream fin(filename);
if (!fin)
{
cerr << \"Unable to open file \" << filename << endl;
exit(1);
}
while (!fin.eof())
{
// get winner
fin >> winner;
if (fin.eof()) break;
// get next token. Could be score or 2nd part of winner name
fin >> buffer;
// If buffer has a comma, then it\'s a score
if (strchr(buffer,\',\'))
{
winnerScore = atoi(strtok(buffer,\",\"));
}
else
{
strcat(winner,\" \");
strcat(winner,buffer);
fin >> buffer;
winnerScore = atoi(strtok(buffer,\",\"));
}
// get loser
fin >> loser;
// get next token. Could be score or 2nd part of loser name
fin >> buffer;
// If first digit is numeric, then it\'s a score
if (isdigit(buffer[0]))
{
loserScore = atoi(buffer);
}
else
{
strcat(loser,\" \");
strcat(loser,buffer);
fin >> buffer;
loserScore = atoi(buffer);
}
cout << winner << \" over \" << loser << \' \' << winnerScore << \" to \" << loserScore << endl;
}
}
Repeat the parsing example for the football scores above, but use only c++ string class and string functions for the parsing.
| Cincinnati 27, Buffalo 24 Detroit 31, Cleveland 17 Kansas City 24, Oakland 7 Carolina 35, Minnesota 10 Pittsburgh 19, NY Jets 6 Philadelphia 31, Tampa Bay 20 Green Bay 19, Baltimore 17 St. Louis 38, Houston 13 Denver 35, Jacksonville 19 Seattle 20, Tennessee 13 New England 30, New Orleans 27 San Francisco 32, Arizona 20 Dallas 31, Washington 16 |
Solution
#include <iostream>
#include <string>
using namespace std;
int main()
{
const char filename[] = \"C:/temp/fb_scores.txt\";
char buffer[16], winner[32], loser[32];
int winnerScore, loserScore;
ifstream fin(filename);
if (!fin)
{
cerr << \"Unable to open file \" << filename << endl;
exit(1);
}
while (!fin.eof())
{
fin >> winner;
if (fin.eof()) break;
fin >> buffer;
if (strchr(buffer,\',\'))
{
winnerScore = atoi(strtok(buffer,\",\"));
}
else
{
strcat(winner,\" \");
strcat(winner,buffer);
fin >> buffer;
winnerScore = atoi(strtok(buffer,\",\"));
}
fin >> loser;
fin >> buffer;
if (isdigit(buffer[0]))
{
loserScore = atoi(buffer);
}
else
{
strcat(loser,\" \");
strcat(loser,buffer);
fin >> buffer;
loserScore = atoi(buffer);
}
cout << winner << \" over \" << loser << \' \' << winnerScore << \" to \" << loserScore << endl;
}
return 0;
}


