我正在编写一个类的代码,我从一个由逗号分隔的巨大文件(~850行)中输入。到目前为止我所拥有的是:
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
using namespace std;
struct Station
{
string StationID, StationName;
float Elevation;
double Latitude, Longitude;
int Date, MXPN, MaxTemp, MinTemp, ObsTime;
};
int main ()
{
vector <string> Data;
string DummyLine, TempLine;
int Size = 0;
ifstream InputFile;
InputFile.open("finalc++.csv");
getline(InputFile, DummyLine);
while (InputFile.good())
{
getline(InputFile, TempLine);
Size++;
stringstream ss (TempLine);
while (getline(ss, DummyLine, ',')) {
Data.push_back(DummyLine);
}
}
Station Entry[Size];
for (int i = 0; i <= Size; i++)
{
Entry[i].StationID = Data[i * 10];
Entry[i].StationName = Data[((i*10) + 1)];
Entry[i].Elevation = Data[((i*10) + 2)];
Entry[i].Latitude = Data[((i*10) + 3)];
Entry[i].Longitude = Data[((i*10) + 4)];
Entry[i].Date = Data[((i*10) + 5)];
Entry[i].MXPN = Data[((i*10) + 6)];
Entry[i].MaxTemp = Data[((i*10) + 7)];
Entry[i].MinTemp = Data[((i*10) + 8)];
Entry[i].ObsTime = Data[((i*10) + 9)];
}
return 0;
}
我尝试使用stof
来执行此操作,但无法在工作的任何地方使用它。任何帮助将不胜感激。
答案 0 :(得分:0)
您应该通过从字符串流中提取float来将字符串转换为float。目前你正在使用字符串流,但你从中提取字符串而不是浮点数。
尝试这样的事情:
stringstream ss;
while ( getline( InputFile, DummyLine, ',' ) )
{
ss << DummyLine;
}
float dummyFloat;
while ( ss >> dummyFloat )
{
Data.push_back( dummyFloat );
}
答案 1 :(得分:0)
托盘:
//this can be cause exeptions
Entry[i].Elevation = atof (Data[((i*10) + 2)].c_str());
注意:包括cstdlib