
C/C++
记录平时工作中使用的C++知识点和遇到的各种问题
草上爬
专注技术,热爱分享
展开
-
C++之字符串转16进制
C++之字符串转16进制原创 2016-10-21 09:45:44 · 4752 阅读 · 0 评论 -
C++之分割字符串的两种方式
C++之分割字符串的两种方式。原创 2024-09-26 22:03:47 · 1494 阅读 · 0 评论 -
C++之格式化日期时间为字符串(精确到毫秒)
C++11中提供了获取时间的chrono库,但是格式化显示太方便;C++11还提供了格式化时间iomanip库,通过其put_time方法可以格式化时间到秒,要显示毫秒,就需要自己处理了。原创 2024-09-08 19:59:12 · 1732 阅读 · 0 评论 -
strncpy截断问题
最近在对一块string对象进行拷贝到char数组的时候发现部分数据缺失了。原因是strncpy在复制的时候,在遇到'\0'时,先复制过去,然后的把dest剩下置为了'\0'。所以,一旦源字符串中存在'\0'则会导致源数据被截断。为此我们可以采用memcpy进行拷贝操作(snprintf 拷贝的时候遇到'\0' 也会停止)可以看到,发生了截断。原创 2016-11-12 15:15:44 · 2210 阅读 · 1 评论 -
VS(Visual Studio)调试dll详细过程记录
在我们写的程序中有时候调用dll,并且需要跟踪dll中的函数,此时直接调试调用dll的工程是无法跳进dll的函数的,此时我们可以启动dll工程 来跟踪程序的走向。注意:要有dll的工程,也就是由其源代码,因为我们要在源代码里面打断点。具体步骤如下: ---------------------------------------------------转载 2017-12-06 18:00:47 · 32302 阅读 · 0 评论 -
C++之std::this_thread::get_id()转std::string
C++之std::this_thread::get_id()转std::string原创 2016-10-25 19:24:38 · 2505 阅读 · 1 评论 -
Debug和Release
编译器有这么多优化级别,Debug版本和Release版本其实就是优化级别的区别,Debug称为调试版本,编译的结果通常包含有调试信息,没有做任何优化,方便开发人员进行调试,Release称为发布版本,不会携带调试信息,同时编译器对代码进行了很多优化,使代码更小,速度更快,发布给用户使用,给用户使用以更好的体验,特殊情况下,可以看到两种模式在运行速度上有数量级的差距。Debug模式下在内存分配上有所区别,在我们申请内存时,Debug模式会多申请一部分空间,分布在内存块的前后,用于存放调试信息。原创 2018-04-04 15:12:58 · 12970 阅读 · 0 评论 -
Windows下动态库的搜索顺序
Windows下动态库的搜索顺序原创 2018-04-11 10:37:30 · 4715 阅读 · 1 评论 -
C++程序员必备的面试技巧
平时可以搜集一些大厂的面试题或笔试题,放在优快云博客上,没事就翻一下,个人觉得博客是比书更好的信息载体,比如说可以是彩色的图片、可以用动图等。●善于解决问题:在面试中,经常会遇到一些难题或者意想不到的问题,这时候要保持冷静,运用自己的知识和经验,找出解决问题的方法。●注意沟通技巧:在面试中,要注意和面试官的沟通技巧,要能够清晰地表达自己的思路和想法,同时也要认真听取面试官的意见和建议。●展示自己的实际经验:在面试中,可以通过举例说明自己曾经解决过的问题,或者展示自己的项目经验,来证明自己的实力和经验。原创 2024-01-12 00:10:18 · 2021 阅读 · 41 评论 -
Visual Studio设置release版本可调试
Visual Studio设置release版本可调试原创 2017-08-02 12:48:24 · 6495 阅读 · 0 评论 -
C++:invalid conversion from ‘unsigned char *‘ to ‘const char *‘
事实上reinterpret_cast的使用并不局限在上边所说的几项的,任何类型的指针之间都可以互相转换,都不会得到编译错误。上述列出的几项,可能 是Linux下reinterpret_cast使用的限制,也可能是IBM推荐我们使用reinterpret_cast的方式。※从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针。※从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针。※从一个指向函数的指针到另一个不同类型的指向函数的指针。※从指针类型到一个足够大的整数类型。原创 2016-04-21 09:24:40 · 27071 阅读 · 1 评论 -
递归函数内部的执行顺序
#include <stdio.h> void fun(int n) { printf("1th - Level: %d Address: %d\n", n, &n); if(n < 3) fun(n+1); printf("2th - Level: %d Address: %d\n", n, &a...原创 2018-05-18 12:39:41 · 20292 阅读 · 4 评论 -
C++之字符串大小写转换
要是好需要把字符串转成大写或小写,方便字符串比较。原创 2018-03-07 20:37:39 · 2224 阅读 · 1 评论 -
C++常用标准算法
算法主要由头文件、、组成。是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历、赋值、修改等等;体积很小,只包括几个在序列上面进行简单数学运算的模板函数;定义了一些模板类。原创 2023-10-24 20:11:07 · 2127 阅读 · 1 评论 -
C++之std::string必知必会
string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。原创 2016-11-22 09:46:35 · 4787 阅读 · 1 评论 -
C++ 字符串和数字拼接
C++ 字符串和数字拼接原创 2016-10-12 09:26:26 · 2690 阅读 · 1 评论 -
常用的几种报文校验方式(标准型)
常用的几种报文校验方式(标准型)1.校验和 2.异或校验 3.CRC校验 4.LRC校验 5.补码求和原创 2016-11-29 11:05:57 · 10294 阅读 · 0 评论 -
C++之仿函数与operator()
我们的初衷是想设计一个binary function,使其能做binary function的工作,这看起来并不容易,但是仿函数能解决这个问题。这个函数看起来比前面一个版本更具有一般性,但是他不能满足count_if函数的参数要求:count_if要求的是unary function(仅带有一个参数)作为它的最后一个参数。每当新建一个全局变量,即使是为了coding的便利,我们也要知道我们应该尽可能的少使用全局变量,因为它的cost很高;这段代码看似很不错,实则不符合规范,更重要的是,它不优雅。原创 2017-11-17 16:51:12 · 2836 阅读 · 1 评论 -
C++之复制文件,支持判断路径是否为文件
C++之复制文件,支持判断路径是否为文件原创 2017-11-16 10:07:25 · 17670 阅读 · 1 评论 -
C++ 取代switch的三种方法
上述完全是一个面向过程到面向对象的转变:将每个case分支都作为一个子对象,然后用C++语言的多态性去动态绑定。(2)子类代表了一个case,比必须用type去硬编码的case语句更加具有可读性;值得注意的是函数指针要用typedef定义,否则报错。(3)代码的可读性增强,使得分支的维护性增加;(5)避免了漏写break语句造成的隐蔽错误。(4)面向对象的思想更加符合人看世界的方式;(1)分支的增减只要继续派生即可;原创 2016-10-15 13:03:49 · 14320 阅读 · 6 评论 -
C++之获取GPU(显卡)信息
#include #include #include #include using namespace std;std::string WStringToString(const std::wstring &wstr){ std::string str(wstr.length(), ' '); std::copy(wstr.begin(), wstr.原创 2017-11-24 11:50:17 · 24583 阅读 · 9 评论 -
C++ 获取屏幕显示比例
屏幕默认的显示比例是100%,但是有些用户喜欢调到“中等”或“较大”,这样的话,就可能导致我们开发的应用超出屏幕边界。因此,我们要获取屏幕显示比例,做出相应的处理。Primary display DPI scale factorSimilarly, you can get the pixel density by using the LOGPIXELSX and LOGPIXELSY原创 2017-06-20 09:48:16 · 9942 阅读 · 1 评论 -
C++最简单的写文件
C++最简单的写文件原创 2017-11-11 10:17:24 · 2322 阅读 · 1 评论 -
使用State Threads实现简单的服务器
一次只有一个ST在VP上运行,而VP之间不共享内存,所以任何数据都不需要互斥锁,服务器可以自由使用所有的静态变量和非重入库的函数,这大大简化了编程和调试,并提高性能(例如,对于++和---全局计数是安全的或调用inet_ntoa()不需要使用互斥)。此时,所有进程退出。第一个进程的父进程ID是1,这个进程就是守护进程,下面四个进程都是子进程,它们的父进程都是第一个进程。——给出了编程注意点,包括移植,信号,进程内同步,进程间同步,非网络IO,超时处理,特别谈到进程内同步非常简单,不需要同步资源;原创 2018-03-16 16:06:08 · 6343 阅读 · 1 评论 -
C++获取OpenGL版本号的两种方法
C++获取OpenGL版本号的两种方法原创 2017-06-02 14:42:46 · 11476 阅读 · 1 评论 -
C++之创建Windows系统服务
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。原创 2018-03-07 19:32:16 · 5290 阅读 · 0 评论 -
C++实现的任务队列
C++实现的任务队列原创 2017-01-13 16:27:12 · 4056 阅读 · 1 评论 -
C++定义全局变量的两种方式
一、使用extern关键字cglobal.h#ifndef CGLOBAL_H#define CGLOBAL_Hextern int testValue;#endif // CGLOBAL_Hcglobal.cpp#include "cglobal.h"int testValue=1;调用方式#include "cglobal.h"#include <QDebug>qD...原创 2016-04-09 11:49:59 · 49732 阅读 · 8 评论 -
std::string判断字符串前缀和后缀
后缀的判断方式几乎与前缀相同,首先判断目标字符串与当前字符串的长度,目标字符串大于当前字符串则返回错误,然后判断目标字符串在当前字符串最后一次出现的位置。find函数的作用于rfind类似,但是是正向查找模式串str出现的第一个位置,pos代表从0开始到pos位置结束中正向查找,并且也是正向匹配。rfind函数的作用是查找模式串str在当前字符串中最后一次出现的位置,pos代表从第pos个位置开始逆向查找,但是匹配是正向匹配的。代码的判断使用了rfind函数,该函数的作用将在后面具体解释。原创 2016-11-29 09:53:31 · 8779 阅读 · 0 评论 -
哈希表(Hash Table)
理解Hash 哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。 映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射。这样的对应关系在现实生活中很常见,比如: A -> B原创 2017-12-12 15:49:24 · 5190 阅读 · 0 评论 -
C++实现的高精度计时器(精确到纳秒)
在调试程序的时候,有时候需要知道程序语句执行时间的耗时。特别是比较算法性能的时候,对耗时的精度要求较高。chrono是C++ 11中的时间库,它提供了跨平台的高精度时钟解决方案,精确到纳秒级。原创 2017-11-16 16:15:10 · 6200 阅读 · 0 评论 -
学习C++最好的四个网站
学习C++最好的四个网站:cppreference、LearnCpp、cplusplus、TutorialsPoint原创 2017-11-28 14:03:27 · 9317 阅读 · 2 评论 -
C++之监控文件是否被修改
软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,如果修改了,重新加载。这里config.txt和可执行文件同一目录,每次修改config.txt,就会打印File changed。原创 2023-02-04 14:11:22 · 4066 阅读 · 3 评论 -
C 延时函数
#include void delay(int ms){ clock_t start = clock(); while(clock() - start < ms);}delay(500); 延时500毫秒原创 2016-10-14 16:13:30 · 3382 阅读 · 0 评论 -
C++写文件时主动刷新磁盘文件大小
C++写文件时主动刷新磁盘文件大小原创 2023-12-12 21:48:52 · 2051 阅读 · 0 评论 -
C++之打开控制台窗口并输出我的爱
C++之打开控制台窗口并输出,freopen函数用来替换一个流,或者说重新分配文件指针,以实现重定向。可重定向的流有:标准输入流、标准输出流或者标准错误流。原创 2021-12-14 08:56:07 · 3310 阅读 · 0 评论 -
VC++ 使用预编译头
一、使用默认的预编译头 要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件),想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个“系统级别”的,编译器带的一个头文件。其实不是的,这个文件可以是任何名字的。我们来考察一个典型的由AppWizard生成的MFC Dia原创 2017-07-16 17:10:28 · 4173 阅读 · 0 评论 -
C++之vsnprintf
vsnprintf的使用方法原创 2017-12-30 19:34:51 · 8934 阅读 · 1 评论 -
C++之重定向stdout到内存
C++之重定向stdout到内存原创 2023-10-30 21:55:30 · 1814 阅读 · 0 评论 -
目标文件和可执行文件的存储格式
目标文件和可执行文件里面都有什么。编译器编译源代码(由于汇编比较简单,这里汇编包含在编译中)后生成的文件叫做目标文件(Object File),例如 Visual Studio 下的.obj,或者 GCC 下的.o。原创 2016-10-21 09:27:34 · 3541 阅读 · 1 评论