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

时间:2013-07-10 01:57:32

标签: c++ list memory printing while-loop

几个小时前我开始使用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;
        }
}
}

3 个答案:

答案 0 :(得分:3)

如果您只想将它​​们存储在列表中,那么矢量是一个很好的选择,因为@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”方法从需要时删除它......

在文件上加载矢量: Writing Vector Values to a File

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

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

答案 1 :(得分:0)

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

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

myprogram&gt; data.txt中

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

答案 2 :(得分:0)

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

fstream output("densities");

然后将cout替换为output

这将导致您的值被写入应用程序工作目录中名为“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];
祝你好运!