C++实现的一些功能代码

将当前时间输出到txt中:

调用c++中的fstream流文件,用tm结构获取日期和时间,其在time.h中定义

用ofstream的时候,ofstream out(txtpath,ios::app);    //追加的方式写入    ofstream out(txtpath)  //打开文件,从零开始写入

#include <iostream>
#include <time.h>
#include <fstream>
using namespace std;

void writeTimeToTxt(string txtname)
{
    ofstream fid(txtname);

    time_t tt = time(NULL);
    struct tm local_time;
    localtime_s(&local_time, &tt);

    fid
        << "***testing date: "
        << local_time.tm_year + 1900 << "-" << local_time.tm_mon + 1 << "-" << local_time.tm_mday << " "
        << local_time.tm_hour << ":" << local_time.tm_min << ":" << local_time.tm_sec << endl;
    fid.close();

    return;
}

int main()
{
    string txtname = "time.txt";
    writeTimeToTxt(txtname);

    return 1;
}

输出的结果:

将当前时间以字符串的形式返回:

#include <time.h>

string get_time_string()
{
    time_t tt = time(NULL);
    struct tm local_time;
    localtime_s(&local_time, &tt);
    clock_t now_clock = clock();
    int msecond = now_clock % CLOCKS_PER_SEC;

    char text[256];
    sprintf(text, "%d%d%d%d%d%d%03d", local_time.tm_year + 1900, local_time.tm_mon + 1, local_time.tm_mday,
        local_time.tm_hour, local_time.tm_min, local_time.tm_sec, msecond);
    
    return text;
}
View Code

 

 

 

通过argv向程序中输入参数:

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[]) {

    if (4 != argc)
    {
        cout << "input params error" << endl;
        return -1;
    }

    string type = argv[1];
    string cutmethod = argv[2];
    string resolution = argv[3];

    cout << type << "_" << cutmethod << "_" << resolution << endl;
    

    system("pause");
    return 1;
}

输出结果:

在vs中参数的输入,项目-属性-调试-命令参数-train expand 64x64          输入的字符串,双引号可加可不加

生成的exe调用过程中,.\OutputTimeToTxt.exe "train" expand 64x64     字符串的双引号,可加可不加

 

linux:

以微秒为单位,返回string类型的时间戳,并以时间戳为名称,建立文件夹

#include <iostream>
#include <sys/time.h>
#include <unistd.h>
#include <string>

#include <sys/stat.h> 
#include <sys/types.h>

std::string get_nowtime_linux()
{
    struct timeval tv;
    gettimeofday(&tv,NULL);
    std::string now_time=std::to_string(tv.tv_sec)+"_"+std::to_string(tv.tv_usec);
    return now_time;
}

int main(int argc,char** argv)
{
    std::string now_time=get_nowtime_linux();
    std::cout<<now_time<<std::endl;
 
    int isCreate = mkdir(now_time.c_str(),S_IRUSR | S_IWUSR | S_IXUSR | S_IRWXG | S_IRWXO);
    if( !isCreate )
        printf("create path:%s\n",now_time.c_str());
    else
        printf("create path failed! error code : %d %s \n",isCreate,now_time.c_str());
 
    return 1;
}
View Code

 

 二维数组传引用:

#include <iostream>
using namespace std;

/*传二维数组*/

//第1种方式:传数组,第二维必须标明
/*void display(int arr[][4])*/
void display1(int arr[][4], const int irows)
{
	for (int i = 0; i<irows; ++i)
	{
		for (int j = 0; j<4; ++j)
		{
			cout << arr[i][j] << " ";     //可以采用parr[i][j]
			arr[i][j] += 1;
		}
		cout << endl;
	}
	cout << endl;
}

//第2种方式:一重指针,传数组指针,第二维必须标明
/*void display(int (*parr)[4])*/
void display2(int(*parr)[4], const int irows)
{
	for (int i = 0; i<irows; ++i)
	{
		for (int j = 0; j<4; ++j)
		{
			cout << parr[i][j] << " ";    //可以采用parr[i][j]
			parr[i][j] += 1;
		}
		cout << endl;
	}
	cout << endl;
}
//注意:parr[i]等价于*(parr+i),一维数组和二维数组都适用

//第3种方式:传指针,不管是几维数组都把他看成是指针
/*void display3(int *arr)*/
void display3(int *arr, const int irows, const int icols)
{
	for (int i = 0; i<irows; ++i)
	{
		for (int j = 0; j<icols; ++j)
		{
			cout << *(arr + i*icols + j) << " ";   //注意:(arr+i*icols+j),不是(arr+i*irows+j)
			*(arr + i*icols + j) += 1;
		}
		cout << endl;
	}
	cout << endl;
}


int main()
{
	int arr[][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
	int irows = 3;
	int icols = 4;
	//display1(arr, irows);
	display2(arr, irows);

	//注意(int*)强制转换.个人理解:相当于将a拉成了一维数组处理。
	//display3((int*)arr, irows, icols);
	for (int i = 0; i < irows; i++)
	{ 
		for (int j = 0; j < icols; j++)
			printf("%d ",arr[i][j]);
		printf("\n");
	}

	system("pause");
	return 0;
}

  

  

posted @ 2019-01-26 11:43  9分钟带帽丶  阅读(391)  评论(0编辑  收藏  举报