【问题标题】:Import Set of Doubles to an Array From File C++从文件 C++ 将双精度集导入数组
【发布时间】:2012-12-05 08:01:53
【问题描述】:

我试图完成的是使用“ifstream”打开一个外部 .dat 文件,然后将每个双精度读入一个向量数组。

我有什么:

//Setup I/O
ifstream fileIn;
ofstream fileOut;

//Define vector for file data
vector<double> fileData;

fileIn.open("/FilePath.../checkIn.dat");
//If opening failed, display this text.
if (fileIn.fail( ))
{
    cout << "    Input file opening failed.\n";
    //stop program
    exit(1);
}

我正在读取的文件:

2000 1 1225.72 1 463.81 3 200 1 632 2 1500 1 300 2 1800

我一直在互联网上四处寻找,找不到有用的东西。 我正在寻找类似于 Java 中“hasNextDouble”的函数。

【问题讨论】:

    标签: c++ arrays vector ifstream


    【解决方案1】:

    在我看来,您在模仿 Java 太接近了(即,使事情变得比必要的复杂得多)。

    // Open the file
    std::ifstream file_in("/FilePath.../checkIn.dat");
    
    // Create the vector, initialized from the numbers in the file:
    std::vector<double> fileData((std::istream_iterator<double>(file_in)),
                                  std::istream_iterator<double>());
    

    ...你就完成了。

    【讨论】:

    • 喜欢它。简洁明了。现在,如果用户定义的类型就这么简单 LOL
    • 当我使用该代码时,我收到以下错误:在行尾之后没有匹配的构造函数用于初始化 'vector' And Expected ')'。
    • @BrillianceOfBen:哎呀——我错过了一个括号。我已将mildly modified version 放在网上进行测试(修改为从std::cin 读取,因为这是唯一支持的输入,并将排序后的输出写入std::cout,以表明它读取成功)。
    • 感谢您的帮助!我真的很感激。
    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多