除了使用getline()和使用stringstream转换之外,还有什么方法可以从ifstream读取double?

时间:2013-01-23 06:34:05

标签: c++ fstream

我已经写了以下内容来读取输入文件中的双打,但它看起来很麻烦,我可以使用哪些其他方法?我应该注意哪些优点/缺点?

我认为这种方法最准确,因为不应该有任何二进制< - >十进制转换问题,这是正确的吗?

#include<string>
#include<iostream>
#include<iomanip>
#include<fstream>
#include<sstream>

void Stats::fill()
{
    string temp;
    stringstream convert;

    statFile.open("statsinput.txt");
    for(int i = 0; i<maxEntries && !statFile.eof(); i++)
    {
        getline(statFile, temp);
        convert<<temp;
        convert>>stats[i];
    }
    statFile.close();
}

2 个答案:

答案 0 :(得分:3)

直接在文件中使用输入操作符?

for(int i = 0; i<maxEntries && statFile >> stats[i]; i++)
    ;

请记住,所有输入流都继承自相同的基类,因此您可以对所有其他输入流上的stringstreamcin等流执行所有操作。

答案 1 :(得分:1)

如果你有现代的C ++(C ++ 11)编译器,你可以使用std :: stof,std :: stod或std :: stold函数。

然后你可以写:

 getline(statFile, temp);
 double d = std::stod(temp);

有关C++ Reference page

的更多信息