gpt4 book ai didi

c++ - 从文件读取时如何创建对象 vector ? [C++]

转载 作者:行者123 更新时间:2023-11-28 02:27:42 25 4
gpt4 key购买 nike

基本上,我正在尝试创建一个对象 vector ,但我必须使用我的 Voter 类的重载输入流运算符从文件中读取的信息来创建对象。

主要内容:

#include <cstdlib>
#include <vector>
#include <string>
#include "Voter.h"
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char** argv) {
int i = 0;
int idNumber;
string firstName;
string lastName;
string hasVoted;
vector<Voter> VoterVector;
ifstream inFile;
inFile.open("voters.txt");
if(!inFile){
cout << "Unable to open voters.txt" << endl;
}
inFile >> idNumber >> firstName >> lastName >> hasVoted;
while(inFile) {
Voter temp();
temp >> idNumber >> firstName >> lastName >> hasVoted;
VoterVector.push_back(temp);
inFile >> idNumber >> firstName >> lastName >> hasVoted;
}
return 0;
}

选民类别:

#ifndef VOTER_H
#define VOTER_H
#include <string>
using namespace std;

class Voter {
public:
Voter();
virtual ~Voter();
friend istream &operator>>(istream &in, Voter &v);
friend ostream &operator<<(ostream &out, Voter &v);
private:
int idNumber;
string firstName;
string lastName;
string hasVoted;
};
Voter::Voter() {
this->idNumber = 0;
this->firstName = '-none-';
this->lastName = '-none-';
this->hasVoted = 'FALSE';
}

Voter::~Voter() {
}

istream &operator>>(istream &in, Voter &v) {
in >> v.idNumber >> v.firstName >> v.lastName >> v.hasVoted;
return in;
}

ostream &operator<<(ostream &out, Voter &v) {
out << v.idNumber << endl << v.firstName << endl << v.lastName << endl << v.hasVoted << endl;
return out;
}

我在创建对象并将它们放入 vector 中的方式中不断出错。我很确定我的文件重载和读取是正确完成的,只是不确定设置对象 vector 的正确方法。任何帮助表示赞赏。谢谢!

最佳答案

Voter temp();

这是错误的。它声明了一个函数。

下面是创建 Voter 对象的方法:

Voter temp;

此外,您正在使用 >>> 运算符做一些奇怪的事情。

为什么不简单:

int main()
{
vector<Voter> voterVector;
ifstream inFile("voters.txt");

if (!inFile) {
cout << "Unable to open voters.txt" << endl;
}

Voter temp;
while (inFile >> temp) {
voterVector.push_back(temp);
}
}

关于c++ - 从文件读取时如何创建对象 vector ? [C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29977827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com