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; }
输出的结果:
将当前时间以字符串的形式返回:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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; }
通过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类型的时间戳,并以时间戳为名称,建立文件夹
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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; }
二维数组传引用:
#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; }