c++ - 如何在 C++ 中读取文件并将数据从文件插入到向量中,这是一个类的类型?
问题描述
就像标题说的那样,我需要将文件中的数据插入到向量中,这是我创建的一种类。这是我的代码:
#include <iostream>
#include <fstream>
#include "Film.h"
#include "Comedy.h"
#include <string>
#include <vector>
using namespace std;
Comedy k;
Film f;
int main() {
vector <Comedy> comedy;
ifstream Comedies("Comedy.txt", ios::in);
int number = 0;
string line;
while (getline(Comedies, line)) {
br++;
komedija.push_back(line); // this is where I get the error
}
这是喜剧课:
#pragma once
#include "Film.h"
#include "Actor.h"
#include <vector>
#include <string>
#include <fstream>
using namespace std;
enum Type2 {black = 1, romantic, child};
class Comedy :
public Film
{
private:
vector<Actor>actors;
Type2 typeComedy;
public:
void setActors();
vector<Actors>& getActors();
void setType();
Type2 getType();
void insert();
};
任何人都知道问题是什么,我认为这是因为line
变量是一种字符串类型,并且我试图插入不是字符串类型的向量,然后我如何将文件中的数据插入到不是字符串的向量中细绳?
这是一个电影类:
#pragma once
class Film
{
private:
char name[25];
int timeOfDuration;
char startMovieTime[7];
public:
Film();
void setName();
char* getName();
void setTimeOfDuration();
int getTimeOfDuratiion();
void setStartMovieTime();
char* getStartMovieTime();
~Film() {};
};
解决方案
假设Film
有一个接受 a 的构造函数std::string
,我建议将它添加到派生类中:
示例Comedy
:
class Comedy : public Film {
public:
using Film::Film; // add the `Film` constructor(s)
// ...
};
然后添加一个新的Comedy
可以使用std::vector::emplace_back
:
komedija.emplace_back(line);
如果您出于某种原因想要将电影名称存储在 a 中char[]
,您仍然可以使用接受 astd::string
并将其存储在您的char[]
.
例子:
#include <algorithm> // std::copy_n, std::min
class Film {
private:
char name[25];
public:
Film() : name{} {} // initialize name
// added constructor:
Film(const std::string& Name) : Film() {
std::copy_n(Name.c_str(), std::min(sizeof name - 1, Name.size()), name);
}
};
注意:除非Comedy
有一些特殊的成员变量/函数,否则我建议添加一个category
成员Film
而不是继承自Film
.
推荐阅读
- java - Jmeter:HTTP 请求问题返回 java.net.URISyntaxException
- python - 如何以压缩方式指定文件路径?
- php - 带有帖子的ajax调用不返回任何内容
- hbase - HBase Master 显示为过渡状态
- python - Python:使用“不均匀”列条目创建数据框
- kivy - 按下按钮后如何在 ModalView 中创建倒数计时器?
- python - HTML中div元素的美丽汤循环
- java - spring-boot web 应用程序无法启动:由于缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext
- python - 分类日历图
- c++ - 模板化自动工厂注册