通过更改类别更改输入数量
changing number of inputs with changing class
本文关键字:输入 更新时间:2023-10-16
using namespace std;
template <typename T>
void add(linked<T> &list1,ifstream& myFile){
string a;
while(!myFile.eof()){
myFile >> a;
T car1;
car1.setName(a);
T& car2 = car1;
list1.addtolist(car2);
}
}
int main(){
linked<car> list1;
ifstream myFile;
myFile.open("car.txt");
add(list1,myFile);
cout << (list1.getElem(1)).getName() << endl;
}
car是一个具有参数的类,现在我想通过一个具有两个参数的class(例如BUS)对象的列表,并希望从文件中读取参数。我如何更改添加函数,以便在汽车和两个输入的情况下需要一个输入
P.S。链接是链接列表类。
基本上,我想创建一个函数,如果类是汽车(即模板为car),则需要一个输入,如果类是巴士,则需要两个输入。
提供过载:
std::istream& operator >> (std::istream& is, Car& car)
{
std::string s;
is >> s;
car.setName(s);
return is;
}
std::istream& operator >> (std::istream& is, Bus& bus)
{
std::string s;
std::string s2;
is >> s >> s2;
bus.setName(s);
bus.setProperty(s2);
return is;
}
,然后
template <typename T>
void add(linked<T>& myList, std::istream& myStream){
while (myStream) {
T t;
myStream >> t;
myList.addtolist(t);
}
}
创建模板初始化函数
template<typename T>
T CreateFromFileStream(ifstream& myFile);
template<>
car CreateFromFileStream(ifstream& myFile)
{
std::string a;
myFile >> a;
car myCar;
myCar.setName(a);
return myCar;
}
template<>
bus CreateFromFileStream(ifstream& myFile)
{
...
}
template <typename T>
void add(linked<T> &list1,ifstream& myFile){
while(!myFile.eof()){
list1.addtolist(CreateFromFileStream<T>(myFile);
}
}
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 用户定义函数中的指针和输入
- 如何在C++中检查2D数组中负值的输入验证
- 如何只允许用户输入正整数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type