C/C++ 字符串拼接 sprintf()

原创文章,转载注明:C/C++ 字符串拼接 sprintf()_zaibeijixing的博客-CSDN博客_c语言拼接字符串sprintf

C/C++ 字符串拼接 sprintf()

       利用opencv 按时间命名图片并保存到E盘指定位置,用到字符串拼接知识,找了一些资源,拼凑一下,试了试,还不错,特此记录、分享。

(注)opencv图片保存算是小儿科,代码不再贴出,只给出完整的字符拼接代码。

#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

int main()
{
	//【01】获取时间  //C "sprintf_s"拼接
	SYSTEMTIME sys;
	GetLocalTime(&sys);
	printf("%d-%d-%d_%02d-%02d-%02d-%03d\n", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);			//	打印时间
	char buf[50];
	sprintf_s(buf, "%d-%d-%d_%02d-%02d-%02d-%03d", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);	//	把时间变换为字符格式,保存在buf中。
	cout << buf << endl;


	//【02】保存路径+时间,字符串拼接  //C++ "+"拼接
	string name_s;
	string dir = "E:/mypic/";
	name_s += dir;
	name_s += buf;
	name_s += ".jpg";
	cout << name_s << endl;

	getchar();
	return 0;
}

参考的资源及部分的代码知识点如下,按代码顺序:

①、获取时间。SYSTEMTIME需要包含头文件#include <windows.h>;

②、转换为字符格式。sprintf_s()函数;例下:

char buf[50];             //注意定义太小易导致错误
sprintf_s(buf,"%d",i);    //把整型的i转换为字符型的buf。    原本有多个参数,此处只用这些。

③、字符拼接。

参考《c++拼接字符串效率比较(+=、append、stringstream、sprintf)c++拼接字符串效率比较(+=、append、stringstream、sprintf) - 大油蛙 - 博客园

该文结论为:根据以上结果,如果是使用Linux系统并且是g++(gcc)编译器,大量拼接字符串的效率从高到低依次为:+=、append()、stringstream、sprintf()。

本文直接采用+=,方便、有效。

④、字符串打印。

如果用cout打印string类型,则头文件包含的是#include <string>,而非<string.h>、<CString>。

参考《C++中关于string类型究竟能不能用cout输出的问题C++中关于string类型究竟能不能用cout输出的问题 - weller - 博客园

另外字符转字符串的初始化也有几种种方式:char str[16];str[0]='a';str[1]='3'; 或char str[5]={'a','b','e'};或char str[12]="hello"; 或 char str[]="ab567";建议定义数组长度以免内存混乱错误。

原创文章,转载注明:C/C++ 字符串拼接 sprintf()_zaibeijixing的博客-CSDN博客_c语言拼接字符串sprintf

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值