将数据从字符串向量转换为浮点数和双精度数的麻烦

时间:2013-12-06 22:09:03

标签: c++

我是c ++的新手,我正在编写一个程序,它接收了多个类型的大量数据列表(一些int,一些float,一些double和一些字符串。我所做的是在所有数据中读取的单个字符串向量现在我正在尝试将所有数据排序到结构中。这是我遇到问题的地方。我似乎无法将字符串向量中的数据转换为正确的类型以进行放置在结构中。我尝试过使用stofstod函数但得到错误:'stof'未在此范围内声明并且错误:'stod'未在此范围内声明。所以现在我正在尝试使用stringstreams进行转换,但我一直遇到无限循环错误,我不知道为什么。任何帮助都将不胜感激!

#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);

        stringstream ss (TempLine);
        while (getline(ss, DummyLine, ',')) {
            Data.push_back(DummyLine);
        }
        Size++;
    }

    for (int i = 0; i <= Size; i++)
    {
        Station Entry[i];
        Entry[i].StationID = Data[(i * 10)];
        Entry[i].StationName = Data[(i*10) + 1];
        float TempFloat;
        stringstream FloatStream;
        FloatStream << Data[(i*10) + 2];
        FloatStream >> TempFloat;
        Entry[i].Elevation = TempFloat;
        //Entry[i].Latitude = stod(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;
}

0 个答案:

没有答案