1

我已经编写了以下内容来从输入文件中读取双精度,但这似乎很麻烦,我还可以使用哪些其他方法?我应该注意哪些优点/缺点?

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

#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();
}
4

2 回答 2

3

直接在文件中使用输入运算符?

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

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

于 2013-01-23T06:35:32.640 回答
1

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

然后你可以写:

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

有关C++ 参考页面的更多信息

于 2013-01-23T06:48:56.210 回答