如何存储while循环期间生成的数据

How to store the data produced during a while loop?

本文关键字:数据 循环 while 何存储 存储      更新时间:2023-10-16

我几个小时前开始学习C++(这是我尝试学习的第一种编程语言),但我遇到了一个非常简单的问题(我确信)。。。

基本上,我想从一个算法开始,在给定高度和宽度为整数值的2D表面上,为任何点(由整数a和b定义)提供一个局部"密度值"。

我遇到的问题是,由于我想重用结果,如何存储程序启动时显示的数据(由于命令而显示的数据:

//print
cout<<D<<endl;

我真的很努力地想找到解决方案,却一无所获。。。它可以存储在一个外部文件中,也可以存储在某种"缓冲区"中,任何好的解决方案都可以。

我只需要保留这个数据列表

谢谢!

这是我的代码:

#include <iostream>
#include <fstream>
//#include <vector> (the solution??)
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
// constant values
float Da=0.1; //densities
float Db=0.5;
float Dc=1;
double Dd=1/3;
int l = 99;  //width & height
int h = 99;
float u = 1;  // UNIT

int main ()
{
    float a = 0;
    float b = 0; // Local variables

    while (a<l+1, b<h+1){
        //values for given a & b
        double DL = Da-Da*(b/h)+Dc*(b/h);
        double DR = Db-Db*(b/h)+Dd*(b/h);
        double D  = DL-DL*(a/l)+DR*(a/l);
        //print
        cout<<D<<endl;
        // next pixel & next line
        a++;
        if (a>l) {
            a = 0;
            b = b+u;
        }
}
}

如果你只想把它们存储在列表或其他东西中,那么vector是一个很好的选择,正如@Ben Voigt所提到的。。。

在您的情况下:

std::vector<double> myVector;
.
.
.
.
double D  = DL-DL*(a/l)+DR*(a/l);
// Storing over the vector
myvector.push_back (D);

所以现在你可以用任何你想用的方式来使用向量……别忘了取消注释你的行以包含向量。。。您还可以使用"pop_back"方法在需要时从中删除某些内容…

要在文件上加载矢量,请执行以下操作:将矢量值写入文件

操纵矢量的良好链接:http://msdn.microsoft.com/en-IN/library/8wt934f9%28v=vs.71%29.aspx

如果您需要了解矢量:http://www.cplusplus.com/reference/vector/vector/

假设程序运行时显示了要存储的数据,则可以通过将输出重定向到文件来启动程序。

例如,在linux、unix或具有支持数据重定向的shell的操作系统中:

myprogram>data.txt

然后,您将在文件"data.txt"中看到相同的数据。

您可以使用fstream将值保存到文件中。

fstream output("densities");

然后用output替换cout

这将导致您的值被写入应用程序工作目录中名为"densities"的文件中。这将始终将数据写入同一个文件,因此如果希望在不同的运行之间保留输出,请小心。

当您稍后想要读取该文件时,您将执行类似的操作。

 fstream input("densities");
 vector<double> values;
 // ... inside your loop
 double value;
 input >> value;
 values.push_back(value);
 // ... somewhere else use the values
 // for example, get the 11th density value.
 double density = values[10];

祝你好运!