我有一个文本文件,我试图用ifstream读取几行数据,然后我可以将它们添加到一个链表。我使用了我老师提供给我的主要课程/功能,所以我没有亲自编写任何课程/功能。我已经写了一些其他的类,如果有必要我可以提供它,但是在调试时,问题会在主函数开始尝试读入数据时立即开始。
#include <iostream>
#include <fstream>
#include "datalogger.h"
using namespace std;
int main(int argc, char** argv) {
datalogger dl;
if (argc != 2) {
cout << "Usage: " << argv[0] << " <datafile>" << endl;
exit(0);
}
// Read the data
char* datafile = argv[1];
ifstream infile(datafile);
int timestamp;
double temperature;
double windspeed;
while (!infile.eof()) {
infile >> timestamp;
infile >> temperature;
infile >> windspeed;
if (!infile.eof()) {
dl.addData(timestamp, temperature, windspeed);
}
}
// Output the report
dl.printReport();
return(0);
}
datafile
(smallerdata.txt)的内容如下:
1480906168 -226 361
1480906168 -224 270
1480906175 -222 326
1480906179 -218 236
1480906187 -218 145
1480906189 -216 109
1480906189 -212 145
1480906190 -208 153
1480906197 -204 90
中读取的第一行的timestamp
应为1480906168&amp; temperature
和windspeed
应为-226&amp;分别为361。相反,我的调试器在第24-27行的断点处暂停时给出了这些值:
timestamp = 0
temperature = 2.1219889530967339e-314
windspeed = 3.184022971431627e-314
这些价值来自&amp;为什么呢?
答案 0 :(得分:0)
我建议您添加检查文件是否已打开,如:
ifstream infile(datafile);
if (!infile.is_open())
{
cout << "File " << argv[1] << " cannot be open!" << endl;
exit(0);
}
并且还改变循环的条件,例如:
while (infile.good()) {
infile >> timestamp;
infile >> temperature;
infile >> windspeed;
// just to simplify debugging
cout << "timestamp = " << timestamp << endl
<< "temperature = " << temperature << endl
<< "windspeed = " << windspeed << endl;
// your data processing
if (!infile.eof()) {
dl.addData(timestamp, temperature, windspeed);
}
}
答案 1 :(得分:0)
为什么在文件中有整数值时会读到double?
double temperature;
double windspeed;
应该是
int temperature;
int windspeed;