C++ Can';t将字符串转换为浮点/双精度

C++ Can';t将字符串转换为浮点/双精度,c++,C++,我正在为这个类编写代码,在这个类中,我从一个由逗号分隔的巨大文件(约850行)中获取输入。到目前为止,我得到的是: #include <iostream> #include <string> #include <sstream> #include <fstream> #include <vector> using namespace std; struct Station { string StationID, StationNam

我正在为这个类编写代码,在这个类中,我从一个由逗号分隔的巨大文件(约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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
结构站
{
字符串StationID,StationName;
浮标高程;
双纬度,经度;
int Date、MXPN、MAXTEM、MinTemp、ObsTime;
};
int main()
{
矢量数据;
字符串DummyLine,TempLine;
int Size=0;
ifstream输入文件;
InputFile.open(“finalc++.csv”);
getline(输入文件,DummyLine);
while(InputFile.good())
{
getline(输入文件、模板行);
大小++;
stringstream ss(模板线);
while(getline(ss,DummyLine,,')){
数据。推回(DummyLine);
}
}
车站入口[尺寸];

对于(inti=0;i您应该通过从字符串流中提取float来将字符串转换为float。目前您使用的是字符串流,但您是从字符串流中提取字符串而不是float

试着这样做:

stringstream ss;
while ( getline( InputFile, DummyLine, ',' ) )
{
  ss << DummyLine;
}
float dummyFloat;
while ( ss >> dummyFloat )
{
  Data.push_back( dummyFloat );
}
stringstreamss;
while(getline(InputFile,DummyLine,,'))
{
ss>dummyFloat)
{
数据。推回(dummyFloat);
}
此托盘:

//this can be cause exeptions
Entry[i].Elevation = atof (Data[((i*10) + 2)].c_str());

注意:include cstdlib

文件中的数据不是全部都是浮点。有些是字符串,有些是双精度的,有些是浮点的,还有一些是整数。一行是这样的:GHCND:USC00083909,HIALEAH FL US,3.7,25.8175,-80.2858201201250239200800。我还不知道可以在字符串向量中添加浮点。这允许条目保留它的浮点吗t型?谢谢你的帮助。显然我需要更新我的编译器或一些jazz。仍在试图找出如何做。我尝试了以下操作,但仍然得到相同的错误,所以idk该怎么做。