如何在没有Stod的情况下重写()

时间:2017-07-07 23:47:45

标签: c++ function compiler-errors

如何在不使用 C ++ 中的 stod() strtod()的情况下重写 readDetails 功能? 我将使用的编译器没有启用c ++ 11,我得到了

'stod'未在此范围错误中声明

int readDetails(SmallRestaurant sr[])
{
//Declaration
ifstream inf;

//Open file
inf.open("pop_density.txt");

//Check condition
if (!inf)
{
    //Display
    cout << "Input file is not found!" << endl;

    //Pause
    system("pause");

    //Exit on failure
    exit(EXIT_FAILURE);
}

//Declarations and initializations
string fLine;
int counter = 0;
int loc = -1;

//Read
getline(inf, fLine);

//Loop
while (inf)
{
    //File read
    loc = fLine.find('|');
    sr[counter].nameInFile = fLine.substr(0, loc);
    fLine = fLine.substr(loc + 1);
    loc = fLine.find('|');
    sr[counter].areaInFile = stod(fLine.substr(0, loc));  //line using stod
    fLine = fLine.substr(loc + 1);
    loc = fLine.find('|');
    sr[counter].popInFile = stoi(fLine.substr(0, loc));
    fLine = fLine.substr(loc + 1);
    sr[counter].densityInFile = stod(fLine);   //line using stod
    counter++;
    getline(inf, fLine);
}

//Return
return counter;
}

以下是我要阅读的文字:

人口普查局201,阿拉巴马州奥托加县| 9.84473419420788 | 1808 | 183.651479494869 人口普查区202,阿拉巴马州奥托加县| 3.34583234555866 | 2355 | 703.860730836106 人口普查路线203,阿拉巴马州奥托加县| 5.35750339330735 | 3057 | 570.60159846447

1 个答案:

答案 0 :(得分:0)

使用std::istringstream

std::string number_as_text("123");
int value;
std::istringstream number_stream(number_as_text);
number_stream >> value;

编辑2:对于那些迂腐的人:
以下示例读取双精度数。与上面读取整数的模式非常相似。

std::string number_as_text("3.14159");
double pi;
std::istringstream number_stream(number_as_text);
number_stream >> pi;

您还可以使用sprintf的变体。

编辑1:另一种解析方法
你可以尝试:

std::string tract;
std::string county;
std::string state;
double value1;
char separator;

//...
std::ifstream input("myfile.txt");
//...
std::getline(input, tract, ',');
std::getline(input, county, ',');
std::getline(input, state, '|');
input >> value1;
input >> separator;
//...
input.ignore(100000, '\n'); // Ignore any remaining characters on the line

以上并不需要单独的字符串到数字转换。