c++
writeeee
积跬步至千里
展开
-
window 平台启动进程
wchar_t wcharProgram[1024 * 10] = { 0 }; QString cmdLine = QString("%1/7z.exe a -tzip %2 %3modelDescription.xml %3binaries %3sources"). arg(QCoreApplication::applicationDirPath()). arg(targetFmuPath). arg(createHeaderParam.m_codePath); cmdLine.toWC.原创 2021-07-16 14:15:55 · 158 阅读 · 0 评论 -
创建工程配置点
General1.Target PlatForm Version2.Output Directory (SolutionDir)(SolutionDir)(SolutionDir)(PlatformName)\bin.$(Configuration)3.Intermediate Directory (SolutionDir)(SolutionDir)(SolutionDir)(PlatformName)\obj.(ProjectName).(ProjectName).(ProjectName).(原创 2020-06-28 13:34:25 · 144 阅读 · 0 评论 -
GetSystemTime,GetLocalTime,GetCurrentTime
MFC下,常用的获取时间方式有以下几种三种:GetSystemTime,GetLocalTime,GetCurrentTime。SYSTEMTIME sysTm, locTm; GetSystemTime(&sysTm); //获取格林威治标准时间,与北京时间相差8小时 GetLocalTime(&locTm); //获取本时区时间。如中国即为东八区北京时间 CTime tm = CTi转载 2016-05-17 11:47:56 · 550 阅读 · 0 评论 -
std::map find 陷阱
正确做法std::map<int,int*>::iterator iter = mapTemp.find(i);if( mapTemp.end() != iter ) return iter->second;return NULL;1.注意判断空,如果不判断是否为mapTemp.end(),如果用mapTemp[x].second方式获取,系统会自己偷偷插入一个查询的键。 因此直接 r原创 2016-05-17 11:46:07 · 6063 阅读 · 0 评论 -
std::map 使用注意事项
对于下面的场景,存在key就使用,否则返回null,有下面两种写法: if(m.count(key)>0) { return m[key]; } return null; iter = m.find(key); if(iter!=m.end()) { return iter->second; } return null;1.这里需要注意:前一种方法很直观,但是效率差原创 2016-05-27 15:27:35 · 1277 阅读 · 0 评论 -
哈希工作原理与应用
参考 http://blog.csdn.net/nju_yaho/article/details/7402208基本原理我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一 个元素“分类”,然后将这个元素存储在相应“类”所对应的地原创 2016-05-27 09:40:43 · 920 阅读 · 0 评论 -
extern 和static学习
extern 有两种用途extern “C” functionname()extern 全局变量第一种用法主要作用是使导出的方法没有加一些随即后缀.方法名清晰 注意事项1.单方面修改extern 函数原型时(即开放接口变了,调用不变),编译不报错 (坑啊,曾经查了一周的问题,结果发现是客户端调用多传了一个参数)第二种一般用于一个文件中定义变量,另外一个文件中通过extern原创 2016-05-13 20:48:15 · 379 阅读 · 0 评论 -
检查本机内部类型占几个字节
#include <iostream>using namespace std;int main(){ short int shortA; int iA; long lA; float fA; double dA; long double ldA; cout<<"short int "<<sizeof(shortA)<<endl; c原创 2016-05-13 19:47:10 · 385 阅读 · 0 评论 -
Linux 多线程1
主要用到的几个函数 //作用创建线程 pthread_create() //pthread_t类型实例(这里是个引用), 在linux中pthread_t被定义为 “unsigned long int”,要创建线程属性,调用的线程函数,线程函数需要的参数 //等待线程返回,阻塞式等待 pthread_join() ////子线程退出函数 pthread_exit()编译时命令 g++ -原创 2016-03-26 12:57:32 · 242 阅读 · 0 评论 -
Linux c++学习大概步骤(转)
Module01 - Linux系统基础 由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提。 该模块的课程包含以下方面的内容:常用Unix/Linux命令熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。深入了解bash了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。正则表达式基础由于U转载 2016-03-14 23:31:07 · 6045 阅读 · 0 评论 -
插入排序和归并排序实现以及时间复杂度分析
插入排序实现步骤取input data中一第二个数开始,与它前边的数依次做比较,插入到所选数字(key)大于的数字的后边,后边的项依次后移动。 假设输入 8 4 2 6 5 34 8 2 6 5 3 //4 4 8 2 6 5 3 //8 2 4 8 6 5 3 //2 2 4 6 8 5 3 //6 2 4 5 6 8 3 //5 2 3 4 5 6 8 //3实现代码复杂度分析归原创 2016-05-17 23:49:22 · 986 阅读 · 0 评论 -
运用std::string 实现split功能
#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string str,substr; vector<string> vstr; char separator=','; int start=0, int index=0;原创 2016-05-17 23:56:30 · 4692 阅读 · 1 评论 -
botan库编译
下载源码解压https://github.com/randombit/botan安装python2.7需要依赖python2.7,没有的话自行安装,安装完毕后,添加环境变量。执行编译运行vs的命令行工具。在vs的命令行工具里,切换路径到解压的botan根目录。执行python运行文件configure.pyconfigure.py --cc=msvc --cpu=x86...原创 2019-02-04 14:28:39 · 2300 阅读 · 0 评论 -
VLD 内存泄漏检查工具
VLD 内存泄漏检查工具1.安装vld-2.5.12.配置依赖库,工程添加路径。Additional Include Directories:…\Soup\Visual Leak Detector\include;Additional Depandencies:…\Soup\Visual Leak Detector\lib\Win32\vld.lib;3.main.cpp或其他任意cpp...原创 2018-11-19 19:49:30 · 618 阅读 · 0 评论 -
VS 调试第三方库源码
首先要有符号表Tool–>Option–>Debugging–>Symbols 其次要有源码解决方案–> 右键–>属性原创 2018-09-13 18:33:46 · 6070 阅读 · 0 评论 -
itoa 函数
#include <stdio.h>#include <stdlib.h>int main (){ int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10);//十进制 printf ("decimal: %s\n",buffer); itoa (原创 2017-04-18 16:32:51 · 599 阅读 · 0 评论 -
std::map 在循环中删除元素
for(;iter!=mapStudent.end();){ if((iter->second)>=aa) { //满足删除条件,删除当前结点,并指向下面一个结点 mapStudent.erase(iter++); } else { //条件不满足,指向下面一个结点转载 2017-02-17 15:44:54 · 5562 阅读 · 0 评论 -
c++知识点汇总
1.static member function(静态成员函数)后不可以加const, 原因是什么?成员函数后加const 代表不可以修改成员变量 static TestClass::TestFunc() const进过编译器会经过3步转化,转化成非成员函数。 第一步就是扩张额外参数(即this 指针),其中加const 的扩张形式如下。 TestClass::TestFunc(const原创 2016-08-26 22:19:34 · 436 阅读 · 0 评论 -
const int*和int* const的含义
const int*和int* const中的const修饰的对象不同,const int*修饰值,不能改变指针所指的值;int* const修饰指针,不能改变指针的地址。举个例子:#include <iostream>using namespace std;///////////////////////////SubMain//////////////////////////////////原创 2016-08-26 17:37:28 · 1890 阅读 · 0 评论 -
从一道面试题谈linux下fork的运行机制
文章出处:http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:#include "stdio.h"#include "sys/types.h"#include "转载 2016-05-09 23:22:45 · 241 阅读 · 0 评论 -
linux 下链接mysql练习
编译命令如下 hzz@hzz-pc:~/code/testCode$ g++ -I /usr/include/mysql/ /home/hzz/code/testCode/connect2.c -L /usr/lib/mysql -lmysqlclient -o connection2 hzz@hzz-pc:~/code/testCode$ ./connection2 #include <st原创 2016-03-14 21:17:07 · 381 阅读 · 0 评论 -
sprintf 格式化
我习惯这样的表述: %c 字符 %d 带符号整数 %i 带符号整数 %e 科学计数法, 使用小写”e” %E 科学计数法, 使用大写”E” %f 浮点数 %g 使用%e或%f中较短的一个 %G 使用%E或%f中较短的一个 %o 八进制 %s 一串字符 %u 无符号整数 %x 无符号十六进制数, 用小写字母 %X 无符号十六进制数, 用大写字母 %原创 2016-04-06 10:35:08 · 626 阅读 · 0 评论 -
c++ char* char*&的区别
两者都是把地址传到函数中。都可以对传入的指针指向的值进行修改一旦传入的指针修改后,char*不会影响到函数外的指针指向的值,char*&会影响到函数外指针指向的值,因为此指针已经不是传入的指针了#includeusing namespace std;struct point{int x;int y;};void changenum1(point *&pnum){转载 2015-09-06 11:04:17 · 3924 阅读 · 1 评论 -
c++中类型转换积累(持续更新)
情景:把const char* 赋值给 char[] 需要用memcpy(myRecordInfo->taskId,TaskId->GetText(),strlen(TaskId->GetText())); //把TaskId->GetText(), 赋值给myRecordInfo->taskId情景:把const char* 赋值给 int myRecordInfo->taskTyp原创 2015-08-20 19:31:31 · 305 阅读 · 0 评论 -
c++ 中多线程 以及 timer 的使用
RunCheckTaskThread() 开辟新的线程,在开辟新线程的时候为他创建了两种事件,一个是timer,一个是停止 CheckTask是新线程执行函数.cpp文件//任务检查线程void Task::RunCheckTaskThread(){ //创建两个事件 m_CheckTaskTimer = ::CreateWaitableTimer(NULL, FALSE, N原创 2015-08-19 19:39:51 · 2543 阅读 · 0 评论 -
c++控制打印机打印demo
#include <stdafx.h>#include <windows.h>#include <iostream>#include <string>using namespace std;#define PRINTER_NAME "HP LaserJet 5200 Series PCL 5-hzz3"int _tmain() { string hello = "!!! Hello转载 2015-07-20 13:52:09 · 7015 阅读 · 0 评论 -
字符串指针变量与字符数组的区别
使用字符串指针变量与字符数组的区别(1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符。而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址。(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同。例如:转载 2015-08-13 19:48:39 · 496 阅读 · 0 评论 -
用c++画空心圆
#include <STDIO.H>#include <iostream>#include <MATH.H>using namespace std;int main(){ int c1=80; int r=10; cin>>r; int r2=r*r; int i=0,j=0; for (j=c1;j>-c1;j--) { do原创 2015-07-29 22:52:40 · 6725 阅读 · 0 评论 -
解决listCtrl 无法显示列头的问题
// TODO: 在此添加额外的初始化代码 CRect rect; m_taskList.GetClientRect(&rect); // //这一段能够解决listCtrl 无法显示列头的问题 // LONG lStyle; lStyle = GetWindowLong(m_taskList.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle原创 2015-08-24 10:38:07 · 2101 阅读 · 0 评论 -
C++指针学习
指针的声明有两种风格int* x,y;// 这里要尽量写成int* x; int* y; 起强调作用int *x,y;//声明了一个指针和一个int变量指针是有类型限值的不能用int型指针去接收double型指针变量Void指针void 指针可以指向任意类型的地址void 指针的操作很受限值(指针比较,给函数传递参数,复制给void类型的指针),不能用此类原创 2015-07-10 08:46:49 · 431 阅读 · 0 评论 -
c++中 string 转 __time64_t
COleDateTime datetime; datetime.ParseDateTime(startTime); struct tm tmTitmTime.tm_sec=datetime.GetSecond(); tmTime.tm_min=datetime.GetMinute(); tmTime.tm_hour=datet原创 2015-08-20 19:22:53 · 2865 阅读 · 0 评论 -
c++ 多线程中 创建EXCEl应用程序失败解决办法
多线程时用CreateDispatch函数创建组件对象是会出错解决方法是在线程开始位置加上下面的代码:AFX_MANAGE_STATE(AfxGetStaticModuleState());CoInitialize(NULL);AfxEnableControlContainer();转载 2015-09-08 18:39:57 · 2403 阅读 · 1 评论 -
C++操作一个Excel字体大小 边框 对齐方式等
void CMy12Dlg::OnOK() { // TODO: Add extra validation here//用m_ExlApp对象创建Excel2003进程 if(!m_ExlApp.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("创建Excel服务转载 2015-10-16 14:17:13 · 4186 阅读 · 0 评论 -
string 字符串转float 基本算法
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2016-03-20 22:07:14 · 5997 阅读 · 0 评论 -
ubuntu 15.04 编译安装 mysql 5.5.44
1.安装Mysql(1)安装编译源码需要的包sudo apt-get install make cmake gcc g++ bison libncurses5-dev(2)下载并解压缩wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.17.tar.gztar -zxvf mysql-5.6.17.tar.gz转载 2015-12-26 14:23:45 · 1362 阅读 · 0 评论 -
c++ 进程_调用其他程序,关闭其他程序
void CMulThread_1Dlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 CFileDialog dlg(TRUE); dlg.DoModal(); m_FilePath=dlg.GetPathName(); LoadFileContent(m_FilePath);}void CMulThread_1Dlg::原创 2016-01-25 15:31:21 · 1260 阅读 · 0 评论 -
c++的那些坑--运算符优先级
int main(){ int i,j; for(i=2;i<100;i++) { for(j=2;j<i;j++) { if (!i%j) break;//if(!(i%j)) break; } if (j==i||i==2) printf("%d\n",i); }}把所有都转载 2016-01-23 20:46:03 · 362 阅读 · 0 评论 -
GetBuffer 认识
转载:http://blog.pfan.cn/xman/43212.htmlGetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。CString ::GetBuffer有两个重载版本:LPTSTR GetBuffer( );LPTSTR GetBuffe转载 2016-01-23 10:13:48 · 320 阅读 · 0 评论 -
c++ string 转 char* const char* char[]
#include #include #include #include int main(){ ///////////////////////////////////////////////////// //string ======> char* char[] ///////////////////////////////////////////////////// std:原创 2015-12-19 23:13:12 · 625 阅读 · 0 评论 -
c++的坑--字符串内存拷贝注意事项
写的程序一运行立马崩溃,通过dmp文件可以看到崩溃语句为 memcpy(desStr,sourStr,MAX_PATH);开始没有注意有什么问题,不就是一条简单的复制嘛,于是猜想可能由于其他地方越界了吧。 但就是这条语句出现错误。sourStr有多长就复制多长,不要复制多余的,因为字符串以为的内存具有不确定性,可能导致你的字符串不正常结束 char *没有加\0就导致出错原创 2016-01-18 23:42:24 · 449 阅读 · 0 评论