无法将字符串转换为float / double

时间:2013-12-06 05:45:55

标签: c++

我正在编写一个类的代码,我从一个由逗号分隔的巨大文件(~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来执行此操作,但无法在工作的任何地方使用它。任何帮助将不胜感激。

2 个答案:

答案 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