将单词和数字文件输入数组c++; P>好,我对编程不是很有经验,但是我有一个任务,是用一个C++程序,用数值方法计算混合物中三种物质的温度,这是基于混合物中每种物质的焓和百分含量。它基本上是一个h=a1*T+a2*T^2+的多项式。。。高达a6。表中给出了H20、H2和O2的系数a1至a6。我的程序需要能够从.dat文件中读取物质名称和系数值,以便我可以将系数用于我的方程式。这就是我需要帮助的地方。如何让程序将物质名称和系数值输入到数组中,以便在方程式中使用它们?对这本小说感到抱歉,但我尽量提供更多的上下文。 下面是我的.dat文件中的内容,以及我试图放入数组中的内容。物质名称是第一个,然后是a1、a2等 H2O 406598.40 440.77751 -.12006604 .000015305539 -.00000000072544769 -4475789700 H2 50815.714 9.9343506 -.000027849704 -.00000035332966 .000000000041898079 -14329128 O2 961091.64 199.15972 -.052736240 .00000897950410 -.00000000063609681 -318699310 H2O 406598.40 440.77751-.12006604.000015305539-.000000000 72544769-4475789700 H2 50815.714 9.9343506-.000027849704-.000000 35332966.0000000000 41898079-14329128 O2 961091.64 199.15972-.052736240.00000897950410-.000000000 63609681-318699310

将单词和数字文件输入数组c++; P>好,我对编程不是很有经验,但是我有一个任务,是用一个C++程序,用数值方法计算混合物中三种物质的温度,这是基于混合物中每种物质的焓和百分含量。它基本上是一个h=a1*T+a2*T^2+的多项式。。。高达a6。表中给出了H20、H2和O2的系数a1至a6。我的程序需要能够从.dat文件中读取物质名称和系数值,以便我可以将系数用于我的方程式。这就是我需要帮助的地方。如何让程序将物质名称和系数值输入到数组中,以便在方程式中使用它们?对这本小说感到抱歉,但我尽量提供更多的上下文。 下面是我的.dat文件中的内容,以及我试图放入数组中的内容。物质名称是第一个,然后是a1、a2等 H2O 406598.40 440.77751 -.12006604 .000015305539 -.00000000072544769 -4475789700 H2 50815.714 9.9343506 -.000027849704 -.00000035332966 .000000000041898079 -14329128 O2 961091.64 199.15972 -.052736240 .00000897950410 -.00000000063609681 -318699310 H2O 406598.40 440.77751-.12006604.000015305539-.000000000 72544769-4475789700 H2 50815.714 9.9343506-.000027849704-.000000 35332966.0000000000 41898079-14329128 O2 961091.64 199.15972-.052736240.00000897950410-.000000000 63609681-318699310,c++,arrays,file,input,C++,Arrays,File,Input,这是到目前为止我的源代码,但它不起作用,我很迷茫 #include <iostream> #include <string> #include <fstream> using namespace std; int main() { double myArray[21]; ifstream file("thermo2.dat"); if (file.is_open()) { for (int i = 0; i < 21; ++i)

这是到目前为止我的源代码,但它不起作用,我很迷茫

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
double myArray[21];

ifstream file("thermo2.dat");

if (file.is_open())
{
    for (int i = 0; i < 21; ++i)
    {
            file >> myArray[i];
    }
}
else 
{
    cout << "the file did not open";
}

for (int i = 0; i < 21; ++i)
    {
        cout << "      " << myArray[i];
    }

return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
双myArray[21];
ifstream文件(“thermo2.dat”);
if(file.is_open())
{
对于(int i=0;i<21;++i)
{
文件>>myArray[i];
}
}
其他的
{
我的建议是:

  • 创建一个
    struct
    ,以保存每个材质的数据

    struct Material
    {
       std::string name;
       double coeffcients[6];
    };
    
  • 创建一个函数,从流中读取一个
    材料

    std::istream& operator>>(std::istream& in, Material& mat)
    {
        // Read the name.
        in >> mat.name;
    
        // If there was an error, return.
        // Let the calling function deal with errors.
        if (!in)
        {
           return in;
        }
    
        // Read the coefficients.
        for (int i = 0; i < 6; ++i )
        {
            in >> mat.coefficients[i];
            if (!in)
            {
               return in;
            }
        }
        return in;
    };
    

  • 将您的结构声明为:

    struct Data
    {
        string species;
        double a[6];
    }
    
    全文如下:

    for(int i = 0; i < 3; i++) {
     fin >> database[i].species;
     for (int j = 0; j < 6; j++) {
       fin >> database[i].a[j];
     }
    }
    
    for(int i=0;i<3;i++){
    fin>>数据库[i].物种;
    对于(int j=0;j<6;j++){
    fin>>数据库[i].a[j];
    }
    }
    
    首先决定如何存储数据。你想要一个数组还是三个数组?你需要文件中的物质名称吗?如果需要,你想要如何存储它们?我尝试使用一个结构数组,但我正在努力让它工作,如果你能看一下我发布的编辑,并提供任何有用的见解!在我意识到之前你已经回复了,我正试图让它与一个结构一起工作。我有什么办法可以让它这样工作吗?我一直在a1-a6的所有getlines中遇到错误。我将把我当前的代码作为一个编辑发布
    getline
    ,不能用来读取
    双重
    。为此,请使用
    操作符>
    。谢谢!这帮了大忙!
    struct Data
    {
        string species;
        double a[6];
    }
    
    for(int i = 0; i < 3; i++) {
     fin >> database[i].species;
     for (int j = 0; j < 6; j++) {
       fin >> database[i].a[j];
     }
    }