我正在使用这个C ++程序来读取特定格式的csv文件。所述文件的格式如下:
2015年1月1日; 2.6
2015年2月1日; 5.7
2015年3月1日; 3.1
我创建了一个程序来读入文件并使用重载运算符>>将值插入到结构中。
<h1 id="playerName">...</h1> to <h1 id="playerName">jim</h1>
编译代码时不会返回任何错误,但是当它到达行
时#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <sstream>
using namespace std;
struct data {
int day, mon, yea;
double temp;
};
istream& operator >> (istream & input, data & c){
char poi, sem;
input >> c.day >> poi >> c.mon >> poi >> c.yea >> sem >> c.temp;
return input;
}
int getDay(){
data c;
return c.day;
}
int getMon(){
data c;
return c.mon;
}
double getTemp(){
data c;
return c.temp;
}
int readWeather (string fileName, string tempData[31][12]){
data c;
stringstream tempStream;
ifstream weatherFile;
weatherFile.open(fileName.c_str());
if (weatherFile.is_open()==false){
cerr << "Error opening file!" << endl;
} else {
cout << "File opened." << endl;
while (!weatherFile.eof()){
weatherFile >> c;
tempStream << getTemp();
tempData[getDay()-1][getMon()-1]=tempStream.str();
}
}
weatherFile.close();
cout << "File closed." << endl;
return c.yea;
}
int main() {
data c;
string file;
string temp[31][12]={""};
cout << "Input CSV file to be processed." << endl;
cin >> file;
string fileDir = "C:\\" + file + ".csv";
readWeather(fileDir,temp);
return 0;
}
程序崩溃了。 我的问题是,是否有人知道该特定线路有什么问题?或者我的通用代码可能有问题?
P.S。我对C ++很新,任何其他建议都会非常棒。
答案 0 :(得分:1)
所有getter函数都返回未初始化的变量。例如:
int getDay(){
data c;
return c.day;
}
在此函数中,您声明一个本地对象c
,然后从中返回一个永远不会初始化的值。
我建议这是学习如何使用调试器的好时机。在这种情况下,它会很快向您显示出错的地方。