gpt4 book ai didi

c++ - 错误重载 >> 运算符从文件读取到类中

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

我目前正在开发一个类程序,该程序要求我重载流提取运算符 >>,以将数据从文件直接提取到类中。我得到一个:

error C2678: binary '>>': no operator found which takes a left-hand operand of type 'std::ifstream' (or there are no acceptable conversion)

这是错误影响的具体代码。

int main()

#include <iostream>
#include <fstream>
#include <iomanip>
#include "stockType.h"
#include "stockListType.h"

using namespace std;

stockType myStock;
stockListType stockList;
ifstream infile;
infile.open("StockData.txt");

infile >> myStock;

stockType.h 头文件

#ifndef STOCKTYPE_H
#define STOCKTYPE_H

#include <string>
#include <fstream>
#include <iostream>


class stockType
{
public:
stockType();
void printStock();
void calcPercent();



char Symbol[3];
float openingPrice;
float closingPrice;
float todayHigh;
float todayLow;
float prevClose;
int volume;
float percent;

friend std::ifstream &operator >> (std::ifstream &in, const stockType &myStock);
};

#endif

stockType.cpp 资源文件

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include "stockType.h"

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock)
{
in >> myStock.Symbol;
in >> myStock.openingPrice;
in >> myStock.closingPrice;
in >> myStock.todayHigh;
in >> myStock.todayLow;
in >> myStock.prevClose;
in >> myStock.volume;

return in;
}

我所做的大部分搜索是人们在使用 ostream 执行此操作时遇到问题,并在程序使用期间获取他们的数据。尝试使用 ifstream 进行错误纠正并直接从 txt 文件中读取一直很困难。我可以提供任何需要的额外信息。任何帮助深表感谢。谢谢。

最佳答案

您输入的运算符(operator)签名

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
// ^^^^^

没有意义。要将流中的任何内容输入到 myStock 参数,它当然必须是非 const。此外,您通常不想重载 std::istream 的特定实现,因此您的签名应如下所示:

std::istream& operator>> (std::istream &in, stockType &myStock);

关于c++ - 错误重载 >> 运算符从文件读取到类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25128447/

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