将文件读入矢量对象
Reading file into an vector object C++
我必须创建一个头文件,一个实现文件和主程序,所有这些都在下面看到,从文件中读取并从中计算某些东西(还没有到那部分)
在我的主程序中,您可以看到我试图将文件打开为矢量对象,但由于某种原因,它似乎无法返回此错误:error: base operand of ‘->’ has non-pointer type ‘std::ifstream {aka std::basic_ifstream<char>}’
一旦它被加载到一个向量对象中,我必须从它计算某些类型的信息,比如下雨最多的月份等。
我在头文件中重载了输入流提取,并在实现文件中实现了这种类型。
如果有任何关于如何改进代码的建议,请告诉我,谢谢
。
您的代码示例是错误的集合。这是我遇到的前三种,排名不分先后。我相信还有更多。
首先,file
不是指针,所以需要
file.member
不file->member
第二,std::ifstream
没有成员MonthData
。所以你不能这样做
file->MonthData ....
或者
file.MonthData ....
第三,你似乎在一些地方有MnthData
,而在其他地方有MonthData
。
如果我有你想做的事:
- 打开文件。
- 读取一个月左右的天气和细节数据。
- 做一些你还没有写的处理。
首先:
ifstream file("meteorogical.data", ios::out);
只要我们假设文件存在,您就希望从文件中读取。
放在末尾的选项- ios::out设置要写入的文件,而不是要读取的文件。(见这里)你根本不想传入这个参数。因为你的流是ifstream (InputFileStream),它默认是read in (ios::in)
其次,检查它是否未打开
!file.is_open()
,而只有当打开
file->MonthData += line + 'n';
这可能是最糟糕的台词了。首先,你忽略了类定义和类实例之间的区别。我建议有一些基本的c++教程的演练,但这一个描述类。这里的主要问题是您的MonthData是一个类定义。也就是说,您的Month应该包含的内容的蓝图,与此分开的是该Month的实例,它将指定特定月份的值和特定天气细节(例如:3月里天气晴朗)
您已经很好地编写了定义,但是您仍然需要创建实例。在打开文件之前输入MonthData myCurrentMonth();
。(你已经用string line;
做过了)
仍然在这一行-我假设你在你的类定义中试图基于istream & operator>>
做的是说file >> myCurrentMonth
。但是让我们忽略它,因为你不需要那样做,它不能与你当前的代码一起工作,而且它过于复杂。相反,在完成从文件中获取所有数据之前,不要担心MonthData对象。存储该字符串中的所有行,关闭文件,然后创建MonthData。
例如:
string theWholeFileText;
while (getline(file, line))
{
theWholeFileText = theWholeFileText + line + 'n';
}
file.close();
一旦您获得了文件的全文,您就可以按照您喜欢的方式解析它以查找月份数据。我没有您的文件,因此您需要检索相关数据,但最后您应该拥有需要传递给新的MonthData实例的所有信息。
int y, int m, float tmax, float tmin, int af, float r, float s;
//Parsing these values from the theWholeFileText
//Plug these values into a new Class Instance of the MonthData.
MonthData monthFromFile(y, m, tmax, tmin, af, r, s);
最后你的处理。你提到要在istream & operator>>
中这样做,但我建议有一个空的MonthData::Process()函数,一旦你得到了所有的数据调用。
它看起来像:
MonthData::Process(){
//process data here.
}
注:我一直提到MonthData
,但在某些地方你把它拼成了MnthData
。
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在h文件中包含.o对象文件
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- 检测 COFF 对象文件中C++内联符号
- 特定对象文件的单线程生成
- 使用对象文件读取三角形数据网格
- 链接时,不同静态库中的同一对象文件
- 防止临时对象文件访问 MSVC 中的磁盘
- 对在不同二进制文件中创建的对象文件的依赖关系
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 是否有正确的方法对生成文件中的对象文件使用模板命令?(C++)
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 使用 make 将对象文件放在特定目录中
- 如何从 3d 对象文件中获取 3d 坐标
- 为什么我的生成文件没有生成对象文件?
- 如何在OSX上正确创建C++对象文件(.o)
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 使用nvcc(CUDA-RINSIDE)正确链接对象文件
- 链接节点本机模块中的提升库,对象文件需要替代库版本