![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Coding......
Stay Hungry,Stay Foolish
展开
-
C++文件名按逻辑语义排序
#include <string>#include <vector>#include <algorithm>#include <Shlwapi.h>#pragma comment(lib,"Shlwapi.lib")using namespace std;wstring string2wstring(string str){ wstring result; int len = MultiByteToWideChar(CP_ACP, 0.原创 2022-05-19 18:04:26 · 555 阅读 · 1 评论 -
MFC Ribbon风格界面去掉左上的Quick Access Toolbar小三角
就是去掉这玩意方法:在MainFrm.cpp下的onCreate函数下找到: m_wndRibbonBar.LoadFromResource(IDR_RIBBON);然后在下面添加: CMFCRibbonQuickAccessToolBar* pQAToolbar = m_wndRibbonBar.GetQuickAccessToolbar(); pQAToolbar->RemoveAll();即可...原创 2021-09-26 14:40:38 · 474 阅读 · 0 评论 -
VS C/C++控制台程序添加内存泄漏自动检测功能
基于MFC框架的应用程序由模板生成时,已经自动添加了内存泄漏自动检测功能,当你的程序有内存泄漏,在Debug调式模式下运行就会在vc的输出窗口里显示出来,容易发现并及时解决。但是我们在写一些测试程序时,往往喜欢用控制台程序来编写,但是VC控制台程序默认不自动添加内存泄漏自动检测功能,所以当我们写的测试程序中存在内存泄漏的问题时,不易被发现,可通过以下步骤添加:1、在程序里定下一下宏(建议在stdafx.h文件中添加)#ifdef _DEBUG//for memory leak ch...原创 2020-12-22 20:40:35 · 383 阅读 · 0 评论 -
cin输入问题的处理:cin.clear() 、cin.sync() 、cin.ignore()
1、cin.clear():清除cin流的错误状态,将错误标识改为默认02、cin.sync():清除缓冲区的数据3、cin.ignore():用来清除以回车结束的输入缓冲区的内容原创 2020-07-29 12:52:14 · 1449 阅读 · 0 评论 -
C++中getline()与cin.getline()详解
参考1:https://www.jb51.net/article/180408.htm参考2:https://www.cnblogs.com/ymd12103410/p/9514896.html原创 2020-07-28 22:55:37 · 857 阅读 · 0 评论 -
C/C++栈溢出的几种解决办法
参见:https://jingyan.baidu.com/article/90bc8fc8514889f653640cd8.html原创 2020-07-05 12:55:46 · 1967 阅读 · 0 评论 -
c++ gets()、scanf() 、getline()、cin读取字符、字符串
参见:https://blog.csdn.net/xxiaobaib/article/details/78419907转载 2020-05-28 18:28:43 · 400 阅读 · 0 评论 -
用stringstream可以用指定字符分割字符串
参见:https://www.cnblogs.com/propheteia/archive/2012/07/12/2588225.html转载 2020-03-28 12:13:03 · 1279 阅读 · 0 评论 -
MFC中的CString.Format及CString,string,char*之间的转换
1、CString.Format的使用:https://blog.csdn.net/wangkaishou/article/details/58461522、CString,string,char*之间的转换 :https://blog.csdn.net/liang841451955/article/details/80688287https://blog.csdn.net/huihui0...原创 2020-01-06 10:19:40 · 354 阅读 · 0 评论 -
MFC Dll的详细介绍及创建
一、MFC Dll的详细介绍MFC下DLL编程:https://www.cnblogs.com/19910101zj/p/4611695.html二、MFCDll的创建VS2017 创建MFC DLL项目:https://jingyan.baidu.com/album/49711c619e0e20fa451b7c40.html?picindex=1mfc导出dll:ht...原创 2020-01-06 10:15:32 · 872 阅读 · 0 评论 -
C++ fscanf函数分割读取文本文件
描述C 库函数int fscanf(FILE *stream, const char *format, ...)从流 stream 读取格式化输入,头文件是<stdio.h>, fscanf遇到空格和换行时结束。声明下面是 fscanf() 函数的声明。int fscanf(FILE *stream, const char *format, ...)参数...原创 2020-01-04 16:49:03 · 7553 阅读 · 3 评论 -
WinExec、ShellExecute用法详解
1、WinExec(): WinExec主要运行EXE文件,不能运行其他类型的文件,不用引用特别单元。原型是:UINT WinExec(exePath,ShowCmd) 参数说明: --xePath:命令行参数。注意,要用pChar转化一下。 --ShowCmd:外部程序的运行方式。其取值如下: ----SW_HIDE 隐藏 ----SW_MAXI...原创 2019-12-22 17:26:58 · 15400 阅读 · 0 评论 -
关于C++中数组下标越界不报错的问题
C++中数组下标越界程序并不报错是因为编译器不会对数组下标作越界检查造成的。 C语言非常重视运行时的效率,所以没有进行数组越界检查,而C++继承了C的效率要求,自然也不做数组越界检查。(检查数据越界,编译器就必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降),先来看一段代码:int a[2];//定义一个长度为...原创 2019-12-08 16:19:39 · 12172 阅读 · 4 评论 -
C++ string类型与数值型变量的相互转换
形参说明:str:重载了string和wstring版本,表示被转换的字符串。idx:表示一个size_t的指针类型,默认为空值。不为空时,转换成功时获取第一个非数值字符的下标。一般情况下,因为它是直接char型指针把最后非数值字符的地址值和起始地址值相减,所以也表示成功转换的字符数量,如”10”转成功为数值10时,idx的值为2。base:表示转换基准,默认是10进制。...翻译 2019-12-04 15:36:49 · 607 阅读 · 0 评论 -
C++string类知识点总结
一、string的初始化首先,为了在程序中使用string类型,必须包含头文件 <string>。如下: #include <string>注意这里不是string.h,string.h是C字符串头文件。string类是一个模板类,位于名字空间std中,通常为方便使用还需要增加: using namespace std;声明一个字符串变量...原创 2019-08-15 20:03:24 · 218 阅读 · 0 评论 -
C++知识:__stdcall、__cdcel和__fastcall三者的区别
stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。1.调用协议常用场合__stdcall:Windows API默认的函数调用协议。__cdecl:C/C++默认的函数调用协议。__fastcall:适用于对性能要求较高的场合。2.函数参数入栈方式__std...原创 2019-08-15 15:24:14 · 190 阅读 · 0 评论 -
C#调用C++DLL类的方法
C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题。 C++生成的DLL一般只提供函数接口,不能直接用C#调用C++写的类,这样非常不方便,于是经过半天的反复测试,终于确定了一套可行的方案,下面就是整个流程的一个范例。(1)编写C++类Mask,类前面的e...原创 2019-08-15 14:42:08 · 2432 阅读 · 0 评论 -
C++中.lib静态库、.dll动态库的生成及调用<1>
一、前言1、动态链接库(dll)与静态链接库(lib):动态链接库(dll)是一个可以被其他应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了...原创 2019-08-13 13:49:39 · 1515 阅读 · 0 评论 -
C++中.lib静态库、.dll动态库的生成及调用<2>
关于动、静态库的介绍及静态库的生成及调用参见:C++中.lib静态库、.dll动态库的生成及调用<1>,本文主要介绍基于VS2015平台的动态库dll的生成及调用方法。一、动态库的生成1、新建Win32项目AddDll,选择DLL类型,并勾选空项目选项2、添加新建项AddDll.h及AddDll.cpp,分别添加如下代码///////AddDll.h#...原创 2019-08-13 15:28:45 · 741 阅读 · 1 评论 -
C#调用C/C++动态库Dll时几个注意事项:PInvoke错误
经常需要封装一些C/C++函数放入动态库中给C#程序调用,通常情况下直接写成如下形式即可:C#封装调用:[DllImport("depressor.dll")] //错误调用方式private static extern void DataDepress(ushort[] data);但是经常出现找不到函数、出现PInvoke错误、传入的数据是一堆莫名其妙的数值之类的错误。实际...原创 2019-08-14 11:37:31 · 2226 阅读 · 0 评论 -
C++中常用的字符串函数
C++语言提供了比C语言更丰富的字符串处理功能。它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作。使用这些现成的功能可以大大减少我们的编程的负担。 输入和输出的字符串函数,如printf,puts,cout,scanf,gets,cout等,在使用时应包含头文件cstdio,并使用其他字符串函数包含头文件cstring。 cstr...原创 2019-08-14 12:40:40 · 2981 阅读 · 1 评论 -
C++、C#控制台应用程序暂停下来的方法
一、C++控制台应用程序暂停//////一、针对Microsoft#include <stdlib.h> //(1)第一种方式system( "PAUSE "); //(2)第二种方式getchar(); //(3)第三种方式Sleep();///////二、针对Linux(1)第一种方式getchar();/////通用的一种方法是...原创 2019-08-14 16:24:18 · 10079 阅读 · 0 评论 -
C#调用非托管C++DLL:直接调用法
在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用reflector等反编译工具反编译出其源代码,所以对于一些核心算法,我们不希望被别人知道,因此为了增强代码的安全性,我们需要将一些核心算法用C或C++来编写,然后用C#来调用这些已经写好的接口。在面对以...原创 2019-08-14 16:58:02 · 1573 阅读 · 1 评论 -
C#调用C++ dll类型对照表汇总
函数调用导致堆栈不对称。原因可能是托管的PInvoke签名与非托管的目标签名不匹配,在dllimport中加入CallingConvention参数就行了,[DllImport(PCAP_DLL,CharSet=CharSet.Auto,CallingConvention=CallingConvention.Cdecl)]要注意C++与NET中数据类型的对应: //...原创 2019-08-14 22:00:51 · 2123 阅读 · 0 评论 -
C++中创建二维数组的几种方法
转载自:https://blog.csdn.net/bqw18744018044/article/details/81665898转载 2019-03-11 10:43:00 · 1069 阅读 · 0 评论 -
C++中各种弹出对话框
#include<windows.h>#include<cstdio> int main(){ int x; x=MessageBox(GetForegroundWindow(),"【标题】","【要说的话】",1); printf("%d\n",x); x=MessageBox(GetForegroundWindow(),"【标题】","【要说的话】",...转载 2019-03-11 10:33:53 · 27062 阅读 · 6 评论 -
C/C++中的复数介绍
C++中的复数操作在C语言基础上引进了面向对象的特性,在 C++ 头文件在 complex 中定义了一个 complex 类用来表示复数。同时为了兼容 C 的 complex 类型,也提供了一个 complex.h 的头文件。 不同的是,在 complex.h 头文件中, complex 关键字被废弃,只能使用 _Complex 和 __complex__ 来使用 C风格的复数形式。...转载 2019-03-08 15:59:38 · 16998 阅读 · 0 评论 -
比较不错的 C++矩阵运算库
Armadillo:C++下的Matlab替代品地址:http://arma.sourceforge.net/许可证:MPL 2.0目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo...转载 2019-03-10 20:25:41 · 15037 阅读 · 0 评论 -
C#调用非托管C++DLL:通过托管C++DLL间接调用
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现在有一个工程名为NativeCppDll的由C++编写的DLL,里面输出了一个CPe...原创 2019-08-15 14:21:18 · 553 阅读 · 0 评论 -
C++/CLI之托管类型:public ref class
Managed C++中令人印象深刻的就是__gc这样的形式—在开始有两个下滑线。其实,原先这样设计的目的,也是为了Managed C++和标准C++尽量相同--毕竟标准C++中可没有什么“托管”的概念。但从几年来的结果来看,似乎效果非常不理想。大家已经忘了Visual Studio.NET中还有C++。所以,在C++/CLI中,其实是对标准C++作了一个扩展。尽管多了一些从来没有看到过的操作符,...原创 2019-08-15 14:37:25 · 8138 阅读 · 0 评论 -
C++中#ifndef XXX_H #difine XXX_H解析及dllexport、dllimport用法示例
在学习C++的过程中,我们经常发现在头文件前部有一些标识符定义,比如://示例1:#ifdef CREATEDELL_API_DU#else #define CREATEDELL_API_DU _declspec(dllimport) ...原创 2019-08-13 12:53:58 · 3627 阅读 · 0 评论