求解下面这道C++程序题 20
解析电影文件movies2017.txt电影文件movies2017.txt包含了2017年电影票房的排行榜,首行是属性名。设计类CMovie包含私有成员unsigned...
解析电影文件movies2017.txt
电影文件movies2017.txt包含了2017年电影票房的排行榜,首行是属性名。
设计类CMovie包含私有成员unsigned int m_rank,m_boxOffice,m_ticket,m_num;
string m_name, m_type, m_country, m_date; 这些成员变量分别对应movies2017.txt中的电影的属性。
设计函数
void parseMovieFile(ifstream& inf,CMovie movies[],int &n);
该函数从电影文件中解析每个电影的各个属性,并封装成CMovie对象,存入对象数组movies[],并统计对象的个数n,返回给调用函数。
写完整的程序使得以下main()中能够正确输出各个电影的信息。
int main()
{
ifstream infile("movies2017.txt");
if(!infile) return -1;
CMovie movies[30];
int n;
parseMovieFile(infile,movies,n);
for(int i=0;i<n;i++)
movies[i].Print();
infile.close();
return 0;
}
文件大概是这样 展开
电影文件movies2017.txt包含了2017年电影票房的排行榜,首行是属性名。
设计类CMovie包含私有成员unsigned int m_rank,m_boxOffice,m_ticket,m_num;
string m_name, m_type, m_country, m_date; 这些成员变量分别对应movies2017.txt中的电影的属性。
设计函数
void parseMovieFile(ifstream& inf,CMovie movies[],int &n);
该函数从电影文件中解析每个电影的各个属性,并封装成CMovie对象,存入对象数组movies[],并统计对象的个数n,返回给调用函数。
写完整的程序使得以下main()中能够正确输出各个电影的信息。
int main()
{
ifstream infile("movies2017.txt");
if(!infile) return -1;
CMovie movies[30];
int n;
parseMovieFile(infile,movies,n);
for(int i=0;i<n;i++)
movies[i].Print();
infile.close();
return 0;
}
文件大概是这样 展开
2个回答
展开全部
难得不是类的设计,是怎么把文件中的数据放进去
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
class CMovie
{
public:
CMovie()
{
}
void Print(){
cout << rank << '\t'
<< name << '\t'
<< type << '\t'
<< total << '\t'
<< price << '\t'
<< num << '\t'
<< country << '\t'
<< date << '\t'
<< endl;
}
void setRank(char *str){
rank = str;
}
void setName(char *str){
name = str;
}
void setType(char *str){
type = str;
}
void setTotal(char *str){
total = str;
}
void setPrice(char *str){
price = str;
}
void setNum(char *str){
num = str;
}
void setCountry(char *str){
country = str;
}
void setDate(char *str){
date = str;
}
private:
string rank;
string name;
string type;
string total;
string price;
string num;
string country;
string date;
};
void parseMovieFile(ifstream &in, CMovie *movie, int &n)
{
n = 0;
char buffer[256];
char str[20];
while(!in.eof())
{
memset(buffer, 0, 256);
in.getline(buffer, 256);
int i = 0;
int j = 0;
int k = 0;
while(1)
{
if(buffer[i] == '\0'){
cout << str << endl;
movie[n].setDate(str);
memset(str, 0, 20);
break;
}
if((buffer[i] == '.') || (j == 0 && buffer[i] == '\t')){
i++;
continue;
}
if(buffer[i] == '\t') {
str[j] = '\0';
j = 0;
cout << str << endl;
switch(k)
{
case 0:
movie[n].setRank(str);
break;
case 1:
movie[n].setName(str);
break;
case 2:
movie[n].setType(str);
break;
case 3:
movie[n].setTotal(str);
break;
case 4:
movie[n].setPrice(str);
break;
case 5:
movie[n].setNum(str);
break;
case 6:
movie[n].setCountry(str);
break;
default:
break;
}
k++;
memset(str, 0, 20);
continue;
}
str[j] = buffer[i];
i++;
j++;
}
n++;
}
}
int main(int argc, char *argv[])
{
ifstream infile("movies2017.txt");
if(!infile) return -1;
CMovie movies[30];
int n;
parseMovieFile(infile,movies,n);
for(int i=0;i<n;i++)
movies[i].Print();
infile.close();
return 0;
}
2018-05-10
展开全部
你得是管二的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询