版权声明:转载需标明该文链接。 https://blog.csdn.net/zaibeijixing/article/details/82983660
原创文章,转载注明:https://blog.csdn.net/zaibeijixing/article/details/82983660
C/C++ 字符串拼接 sprintf()
利用opencv 按时间命名图片并保存到E盘指定位置,用到字符串拼接知识,找了一些资源,拼凑一下,试了试,还不错,特此记录、分享。
(注)opencv图片保存算是小儿科,代码不再贴出,只给出完整的字符拼接代码。
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main()
{
//【01】获取时间
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】保存路径+时间,字符串拼接
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)》https://www.cnblogs.com/james6176/p/3222671.html
该文结论为:根据以上结果,如果是使用Linux系统并且是g++(gcc)编译器,大量拼接字符串的效率从高到低依次为:+=、append()、stringstream、sprintf()。
本文直接采用+=,方便、有效。
④、字符串打印。
如果用cout打印string类型,则头文件包含的是#include <string>,而非<string.h>、<CString>。
参考《C++中关于string类型究竟能不能用cout输出的问题》https://www.cnblogs.com/mzct123/p/4876185.html
原创文章,转载注明:https://blog.csdn.net/zaibeijixing/article/details/82983660