几个小时前我开始使用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;
}
}
}
答案 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
答案 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];
祝你好运!