ifstream 给我带来麻烦

Posted

技术标签:

【中文标题】ifstream 给我带来麻烦【英文标题】:ifstream giving me trouble 【发布时间】:2016-03-28 00:11:10 【问题描述】:

我使用 fstream 让 Visual Studio 读取包含大约 100 行重复信息的文件,每行只是不同的值。我使用计数变量来跟踪读取了多少次,但它一直说 0。我知道文件正在打开,因为我放置了一个 If 语句来检查我。是的,我从中读取的文件也是我的 cpp 文件的位置。如果您能看一下并告诉我我缺少什么,我将不胜感激!

#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>
using namespace std;

int main() 
//file variables
string date;
int rainIn, minTempF, maxTempF;

//variables
int count = 0;
double totalRain = 0;
double averageMinimumTemp = 0;
double averageMaximumTemp = 0;
double overallMaxTemp = 0;
double overallMinTemp = 0;

ifstream inFile("2014WeatherData.txt");

if (!inFile) 
    cout << "Error: Input File Cannot Be Opened\n";
    exit(EXIT_FAILURE);


//read file records
while (inFile >> date >> rainIn >> maxTempF >> minTempF) 
    count++


cout << count << " Records read\n";

return 0;

我只在计算机科学 1,所以我还在学习任何反馈将非常感谢! 这也是我试图从中读取的 txt 文档中的几行

20140101    0.00    69.08   31.10
20140102    0.00    42.98   25.16
20140103    0.00    51.98   25.16

【问题讨论】:

为什么不将cout &lt;&lt; count... 行放入循环中以确保成功读取任何记录?我的猜测是阅读失败。 发布您正在阅读的文件的前几行可能会有所帮助(剪切'n'粘贴文件中实际的内容 - 不得作弊) 我有 if 语句来检查文件是否正在打开。我没有收到错误消息。当我从包含文件夹中取出 txt 文档时,我确实收到了该消息。但是当我把 txt 文档放回去时,我没有收到消息 还添加了txt文档的前三行。其他行都是这样的 仅仅因为文件打开,并不意味着您正在正确读取数据。 ;) 【参考方案1】:

问题是……

int rainIn, minTempF, maxTempF;

...创建integer 变量,然后您尝试将浮点值读入其中。将它们更改为doubles。 (count++ 后面还需要一个分号)。

【讨论】:

以上是关于ifstream 给我带来麻烦的主要内容,如果未能解决你的问题,请参考以下文章

为啥 c++ ifstream 不能从设备读取?

如何获取文件的地图视图只有ifstream?

ifstream 没有匹配的初始化构造函数

ifstream::read 在 ASCII 26 处失败

ifstream - 移动到下一个单词

ifstream 打开失败时如何获取错误消息