C++在指定文件夹下实时输出数据,并根据时间为输出文件命名1、把整型数据转换为字符型,从而可在文件名应用。
C++中也有类似于C语言的sprintf的函数,即stringstream类。它可将计数变量等的数值变成字符型数值,从而可以用在文件的命名上,实现实时输出数据,并改名。
经典实例:转自csdn博客的一条回复
http://topic.csdn.net/u/20080523/05/f55b68ee-a594-4933-82ae-87beb143c2d9.html
#include "iostream"
#include "string"
#include "sstream"
using namespace std;
void main()
{
string a("12+");
string b("12");
int d=24;
string c;
string e;
ostringstream ost(e);
ost<<d;
c=a+b+"="+ost.str();
cout<<c<<endl;
}
2、真正输出文件时可添加如下代码:
fstream outfile;
string fullname,partname;
ostringstream ost(partname);
ost<<i;
fullname="u_h_"+ost.str()+".dx";
outfile.open(fullname.c_str(),ios::out);
outfile.close();
3、上述输出的文件与当前程序在同一个文件夹下,不易归档查看,可设定在指定文件夹下批量输出文件,此时可以把文件名与路径结合,添加代码如下:
system("mkdir ./a");//由系统建立文件夹,可以用绝对路径或相对路径
fullname="./a/"+fullname;
随机数的产生:随机数的产生由以下代码实现:(http://www.cnblogs.com/bingcaihuang/archive/2011/03/12/1982181.html)
srand(time(NULL));
之后调用rand()即可得到0 ~ 32757范围的随机数
包含头文件stdlib.h和time.h 或 cstdlib和ctime
#include <stdlib.h>
#include <time.h>
或
#include <cstdlib>
#include <ctime>
用下列公式即可得到指定范围[m,n]的随机数:
r = rand()%(n - m + 1) + m;
注意:n - m 的绝对值不能超过32767
但是如果要产生这期间的随机小数,还要加上小数部分:
r=rand()%(n-m)+m+(float)(rand()%10000)/10000;
如果要产生0-1之间的随机数:
可以用cout < <(double)rand()/RAND_MAX;
还有几个注意点:
(1)srand()函数是初始化随机数产生器,它产生随机数种子,说白了就是初始化随机数。
srand((unsigned)time(0));取的是系统时间,也就是距离1970.1.1午夜有多少秒。
而for循环每循环一次时间远远小于1秒,这就导致了srand((unsigned)time(0))产生的种子并没有改变。 那么,相同的随机数种子所产生的随机数肯定是一样的了。
(http://zhidao.baidu.com/question/104430435.html)
故要把srand()函数放在for循环之外。
(2)如果不用srand,则今天和明天产生的随机数是相同的。
注意编程中的取商运算:
两个int型相除取商,还是int型,可能就会造成误差很大,或者直接就是0的情况。注意强制类型转换。
类的成员函数的声明和定义后面加const与不加const的区别:加const表示成员函数可以对const对象进行操作,但是不能改变数据成员的内容。
举例:http://bbs.csdn.net/topics/60366514
#include<iostream>
using namespace std;
class A{
int data;
public:
A(int da=100):data(da){}
void display1(){cout<<data<<endl;}
void display2() const {cout<<data<<endl;}
void display3() const
{
data+=100;
cout<<data<<endl;
}
};
int main()
{
A a1;
const A a2;
a1.display1();
a1.display2();
a1.dispaly3(); //error ,const声明的成员函数不能改变数据成员的值
a2.display1(); //error ,const对象不能调用非const函数
a2.display2(); //right
a2.display3(); //error ,const对象能调用const函数,但是该函数不能改变数据成员值
system("Pause");
return 0;
}
https://blog.sciencenet.cn/blog-441611-616841.html
上一篇:
AFEPack 基础知识下一篇:
枝晶生长是一个非线性的复杂自组织过程