![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
小小的熊OnlyOne
这个作者很懒,什么都没留下…
展开
-
预处理阶段能做什么:宏定义和条件编译
1-预处理编程 预处理阶段编程的操作目标是“源码”,用各种指令控制预处理器,把源码改造成另一种形式,就像是捏橡皮泥一样。 首先,预处理指令都以符号“#”开头。 虽然都在一个源文件里,但它不属于 C++ 语言,它走的是预处理器,不受 C++ 语法规则的约束。 预处理编程也就不用太遵守 C++ 代码的风格。一般来说,预处理指令不应该受 C++ 代码缩进层次的影响,不管是在函数、类里,还是在 if、for 等语句里,永远是顶格写。2-包含文件(#include) ...转载 2021-11-29 17:11:56 · 248 阅读 · 0 评论 -
C++编码风格
1-空格与空行 留白的艺术。 恰当地运用空格和空行。而是要多用空格分隔开变量与操作符,用空行分隔开代码块,保持适当的阅读节奏。2-起个好名字 为变量、函数、类、项目等起一个好听易懂的名字。变量、函数名和名字空间用 snake_case,全局变量加“g_”前缀;_自定义类名用 CamelCase,成员函数用 snake_case,成员变量加“m”前缀;宏和常量应当全大写,单词之间用下划线连接;尽量不要用下划线作为变量的前缀或者后缀(比如 local、name),很难识别3-用好注转载 2021-11-29 16:42:52 · 216 阅读 · 0 评论 -
VS中C++编程时提示函数不明确的解决办法
如fwrite、fclose、memset等函数;解决方法:加双冒号指定调用全局函数;效果如下:::memset().原创 2019-11-13 14:27:21 · 13631 阅读 · 0 评论 -
char数组相关
1.比较strcmpint val = strcmp(dlg->m_pXmlTool->m_CurrentFileName, filesname[i].c_str());相同为02.原创 2019-10-18 10:54:21 · 101 阅读 · 0 评论 -
C++ 获取文件下所有文件列表
void CPacsTransferToolDlg::GetFilesFromDirectory(string path, vector<string>& files, vector<string> &ownname){ /*files存储文件的路径及名称(eg. C:\Users\WUQP\Desktop\test_devided\data1...原创 2019-10-18 11:00:54 · 565 阅读 · 0 评论 -
C++运行第三方程序
void RunExe(char* command){ TCHAR aaa[512]; MultiByteToWideChar(0, 0, command, 256, aaa, 512); STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi; bool bRet = CreateProcess...原创 2019-10-18 10:59:20 · 249 阅读 · 0 评论 -
MFC:界面相关
1.设置控件值SetDlgItemInt(IDC_STATIC1, i + 1);原创 2019-10-18 10:58:26 · 129 阅读 · 0 评论 -
C++ 文件相关
1.删除文件remove(newPath);2.文件是否存在int iRtn = _access(newPath, 0);存在返回0,否则-1;原创 2019-10-18 10:56:33 · 57 阅读 · 0 评论 -
dll可以只运行一次的函数位置
dll可以只运行一次的函数位置,例如下面的FFmpeg使用。BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpReserved) // reserved{ // Perform actions ...原创 2018-05-07 12:19:25 · 553 阅读 · 0 评论 -
inet_pton未定义
添加#include <ws2tcpip.h>原创 2019-01-21 16:47:11 · 8277 阅读 · 5 评论 -
最可能的异常: 0xC0000008: An invalid handle was specified 的原因与解决方案
之后无论是点击“继续”或者“忽略”都能继续运行,不会崩溃,再次单击打开结点时候又会弹出相同的异常。。。但是直接找到工程目录下的exe文件(无论是Debug还是Release)都能够正常运行,或者是Ctrl + F5,说明只有调试的时候才会显示这个错误。 程序中查找文件没有使用CFileFind类而是直接使用API函数::FindFirstFile和::FindNextFile。这两...转载 2019-01-23 10:07:03 · 11839 阅读 · 2 评论 -
BOOL与bool TRUE与true FALSE与false 区别
FALSE/TRUE与false/true的区别1.FALSE/TRUE与false/true的区别:false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define,这要用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:#ifndef FALSE#define FALSE 0#endif#ifnd...转载 2019-08-02 16:13:36 · 1462 阅读 · 0 评论 -
C++编程:XAudio2 API应用示例
C++编程:XAudio2API应用示例XAudio2是一个跨平台的API,在Xbox360及Windows中得到支持。在Xbox360上,XAudio2作为一个静态库编译到游戏可执行文件中。在Windows上,XAudio2提供一个动态链接库(DLL)。以下例子只使用了其中的一部分功能,并不全面。详情请看微软技术页的XAudio2编程相关(英文)。使用XAudio2来播放未压缩的...转载 2019-07-23 13:58:49 · 3393 阅读 · 0 评论 -
C写文件
FILE* m_pLogFile; m_pLogFile = NULL; if (m_pLogFile==NULL) { char abc[256]; SYSTEMTIME systemTime; GetLocalTime(&systemTime); sprintf_s...原创 2019-08-13 10:15:06 · 608 阅读 · 0 评论 -
C++获取系统当前时间(精确到微秒)
获取系统当前时间在调试、日志输出、代码优化时,我们常常需要获得系统的时间。在一些性能要求高的代码优化时,对时间的精确度还比较高。在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒):#ifdef _WIN32#include <windows.h>#else#include <time.h>#endif // _WIN...转载 2019-09-18 16:11:56 · 5839 阅读 · 0 评论 -
VS 更改.lib和.exp输出位置
如果你不想输出的.exe文件夹下面还有.lib和.exp这些杂项,你可以打开:配置属性 > 链接器 > 高级 > 导入库,在这里修改位置,例如:$(Configuration)\$(TargetName).lib.exp也是根据.lib的文件名来生成的。...转载 2019-09-24 16:45:17 · 2908 阅读 · 0 评论 -
C++ int转string的多种方式
1.int a = 10;char *intStr = itoa(a);string str = string(intStr);2.int a = 10;stringstream ss;ss << a;string str = ss.str();3. C++11 (推荐,如果支持的话)#include <string> std::stri...转载 2018-12-18 08:46:33 · 44914 阅读 · 0 评论 -
C++ string中find() 用法
string中 find()的用法 rfind (反向查找) (1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串(3)size_t find (co...转载 2018-12-18 08:46:42 · 26798 阅读 · 2 评论 -
C++中substr函数的用法
#include<string>#include<iostream>using namespace std;int main(){ string s("12345asdf"); string a = s.substr(0,5); //获得字符串s中从第0位开始的长度为5的字符串 cout << a <<...转载 2018-12-18 08:46:49 · 800 阅读 · 0 评论 -
C#调用C++写的Dll时的运行时错误解决
1. Run-Time Check Failure #0 - The value of ESP was not properly saved across afunction call. This is usually a result of calling a function declared with onecalling convention with a function pointer...转载 2018-06-13 14:59:50 · 644 阅读 · 0 评论 -
CxImage的编译及简单使用举例
1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码;2、 解压缩后,以管理员身份打开CxImageFull_vc10.sln工程,在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteCharacter Set,首先编译jasper...转载 2018-06-13 13:24:34 · 341 阅读 · 0 评论 -
C++使用SQLite步骤及示例
C++使用SQLite步骤及示例开发环境:Windows XP+VS2005。开发语言:C++。1、 下载sqlite文件。下载网址:http://www.sqlite.org/download.html。SQLite版本为SQLite 3.7.13,相关文件如下。sqlite-dll-win32-x86-3071300.zip:包含sqlite3.def、sqlite3.dll文件。sqlite...转载 2018-06-12 15:06:47 · 9661 阅读 · 0 评论 -
C++异常集锦
1.程序跳框宕机 --windows日志--应用程序--报ndll.dll错误 如下:错误模块名称: ntdll.dll,版本: 10.0.16299.334,时间戳: 0x71be8751 异常代码: 0xc0000374 错误偏移量: 0x000da899 一般都是系统内存泄漏或变量释放异常。...原创 2018-05-16 09:45:55 · 604 阅读 · 0 评论 -
mciSendString()用法
做个mp3播放器,用realplay和WMP做出来的程序内存占用太大。/****mciSendStringThe mciSendString function sends a command string to an MCI device. The device that the command is sent to is specified in the command string. MCIE...转载 2018-05-07 10:20:26 · 25467 阅读 · 1 评论 -
debug版本运行没有问题,而release版本总是报错?
下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值近似于随机(我想是直接从内存中分配的,没有初始化过)。这样就明确了,如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加...转载 2018-05-12 17:07:16 · 5459 阅读 · 0 评论 -
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
不过还有人提出可以通过“高级保存选项”命令消除的方法:首先打开有该warning的文件,一般可以在外部依赖项中找到相应的warning文件然后点击【文件】选【高级保存选项】,显示如下,或是其他别的编码格式,现在开始改变编码格式为【简体中文(GB2312)- 代码页936】或【Unicode-代码页1200】,总之是适合自己的编码格式点击【确定】后保存,重新编译,warning消失。另外:由于VS2...转载 2018-05-11 17:41:58 · 7825 阅读 · 1 评论 -
Visual C++ 内存泄露检测工具(VLD)
简述C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。VLDVLD(Visual Leak Detector)是一款用于 Visual C++ 的免费内存泄露...转载 2018-06-22 14:34:32 · 533 阅读 · 0 评论 -
C#接收C++动态库返回字符串char*,在C#端如何接收并得到正确的字符串
1.C++端int EndRecognition(char* result){ int errcode; char m_Result[1024]; memset(m_Result,0,1024); if (errcode = sr_stop_listening(&asr, m_Result)) { printf("stop listening failed %d\n", errcode...原创 2018-06-25 18:00:25 · 1997 阅读 · 0 评论 -
C++ 抓取NULL异常
_try { w->decoder->Release(); } _except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { int a = 0;...原创 2018-11-16 10:43:58 · 606 阅读 · 0 评论 -
C++:多线程与锁
多线程是小型软件开发必然的趋势。C++11将多线程相关操作全部集成到标准库中了,省去了某些坑库的编译,真是大大的方便了软件开发。多线程这个库简单方便实用,下面给出简单的例子 #include <iostream> #include <thread> #include <mutex> using namespac...转载 2018-09-05 14:22:53 · 21227 阅读 · 0 评论 -
C++ char*作返回参数
char* fileName=new char[256];GetOutFilePath(fileName,isMain);delete[]fileName;void CFFMPEGLib::GetOutFilePath(char* &filePath, bool isMain){ char fileName[256]; strcpy_s(filePath, 256,fileName);}原创 2018-06-27 16:51:26 · 6759 阅读 · 0 评论 -
C++ 值传递、指针传递、引用传递详解
最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式”数组和指针背后——内存角度语义"陷阱"---数组和指针而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数...转载 2018-06-26 16:32:21 · 122 阅读 · 0 评论 -
c++的成员变量是在堆还是栈区
成员变量并不能决定自身的存储空间位置。决定存储位置的对象的创建方式。即:如果对象是函数内的非静态局部变量,则对象,对象的成员变量保存在栈区。如果对象是全局变量,则对象,对象的成员变量保存在静态区。如果对象是函数内的静态局部变量,则对象,对象的成员变量保存在静态区。如果对象是new出来的,则对象,对象的成员变量保存在堆区。...转载 2018-05-11 15:51:33 · 9694 阅读 · 3 评论