C/C++
文章平均质量分 52
利白
这个作者很懒,什么都没留下…
展开
-
使用sscanf函数提取字符串关键词,像正则表达式那样用起来
把sscanf函数像正则表达式那样用起来。使用sscanf函数提取字符串关键词。原创 2023-10-17 15:35:43 · 700 阅读 · 0 评论 -
进制转换,16进制与float互转
【代码】进制转换,16进制与float互转。原创 2023-02-06 17:36:45 · 2823 阅读 · 0 评论 -
C++动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?
比如debug的exe调用release编译生成的dll的函数,参数如果使用stdvector或者stdstring之类的东西,肯定会崩。含有stl的debug动态库和release动态库在项目中不能混用,debug项目必须用debug库,release项目必须用release库;,会分别生成debug和release的dll,在exe中必须要引用指定版本的dll,不能混用,否则会出错;只提供给用户release的dll,用户的debug版和release版的exe都可以引用此dll。...........原创 2022-07-21 22:29:13 · 5975 阅读 · 0 评论 -
c++如何去掉vector中的结构体重复元素
1、先看c++如何去掉vector中的基本数据类型的重复元素#include <iostream>#include <vector>#include <algorithm>#include <set>using namespace std;/** * vector去除重复元素 * @tparam T * @param result * @return */template<typename T>vector<原创 2022-02-20 17:37:31 · 5751 阅读 · 0 评论 -
使用std::string函数find_last_of获取文件路径和文件名,进而实现文件更名
案例:const char* infile ="c:\\windows\\winhelp.exe";std::string newfile(infile);std::size_t found = newfile.find_last_of("/\\");if (found != std::string::npos){ std::string dir = newfile.substr(0, found); std::string filename = newfile.subs.原创 2021-11-24 20:17:19 · 1401 阅读 · 1 评论 -
现代C++白皮书
C++之父写的GitHub - Cpp-Club/Cxx_HOPL4_zh: Chinese translation of Bjarne Stroustrup's HOPL4 paper原创 2021-11-19 08:31:44 · 2469 阅读 · 0 评论 -
C++控制台等待,让字符一直输入直到回车
//让字符一直输入直到回车 int x = 0; do { x = getchar(); printf("%c", x); } while (x != '\n');原创 2021-10-12 17:57:06 · 2668 阅读 · 0 评论 -
C++获取文件的创建时间和大小
#include <iostream>#include <sys/stat.h>bool getFileInfo(const std::string &strPath, long long &lCreateTime, long long &lModifyTime, long long &lAccessTime, long &lFileLen){ struct .原创 2021-08-13 19:31:10 · 2028 阅读 · 0 评论 -
string和wstring之间转换的三种方法
方法1#include <string>#include <locale>#include <codecvt>//convert string to wstringinline std::wstring to_wide_string(const std::string& input){ std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; return原创 2021-08-04 21:20:53 · 17139 阅读 · 5 评论 -
C++格式化,补零
C++格式化,补零 char a[20]; char b[] = "xxxx"; //先计算需要补0的长度,补零后并输出字符串。 sprintf(a, "%0*d%s", 15 - strlen(b), 0, b); qDebug() << a; //00000000000xxxx int c = 4; int n = 3; sprintf(a, "%0*d", n, c); qDebug() << a.原创 2021-06-22 19:26:02 · 2175 阅读 · 0 评论 -
const_iterator 转成 iterator 的方法
vector<int> vi;typedef vector<int>::iterator Iter;typedef vector<int>::const_iterator ConstIter;Iter i;ConstIter ci;使用强制转换 i = (const_cast<Iter>(ci)) 会造成编译错误,不能将const_iterator强制转换成iterator。在STL中,正确的转换方法是:i = vi.begin();.转载 2021-03-16 09:57:25 · 838 阅读 · 0 评论 -
C++ STL是否会产生内存碎片?
问:C++ STL是否会产生内存碎片?答:vector是顺序存储的,不会生产内存碎片;但是list和map是非连续存储的,会产生内存碎片。原创 2021-02-10 20:28:11 · 1132 阅读 · 0 评论 -
C++ map容器和multimap容器(STL map容器)
1. 关联容器和map容器概述map容器是关联容器的一种。在关联容器中,对象的位置取决于和它关联的键的值。键可以是基本类型也可以是类类型。关联容器是与非关联容器(顺序容器)相对应的,顺序容器中元素的位置不依赖于元素的值,而是和该元素加入容器时的位置有关。关联容器的类型有下面八种: 按关键字有序保存元素 map 关联数组;保存关键字-值对 set 关键字即值,只保存关键字的容器 multimap 关键字可以重复出现的map multiset 关键字可.转载 2020-12-28 15:52:37 · 813 阅读 · 0 评论 -
C++ add()函数的四种实现方式
直接看源码:#include <QApplication>#include <iostream>int add1(int a, int b){ return a + b;}class ADD{public: int operator()(int a, int b) { return a + b; }};template <typename T, typename U>auto add3(T a原创 2020-12-13 18:35:14 · 10021 阅读 · 0 评论 -
#ifdef和#if defined的差别
注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:#ifdef XXX ....#else ....#endif 只能在两者中选择是否有定义。对于后者,常用法是:#if defined xxx1 ....#elif defined xxx2 ....#elif defined xxx3 ....#endif 可以在多个中选择是否有定义.#ifdef 和 #if defined 的区别在...转载 2020-12-02 10:26:56 · 1579 阅读 · 0 评论 -
C/C++中static局部变量的注意事项
来看示例:#include <QCoreApplication>class A{public: void test() { static int i = 0; i += 10; qDebug() << i; };};int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); A t; t.test原创 2020-11-08 11:46:24 · 433 阅读 · 0 评论 -
C++之结构体数组和std::vector容器结合使用的排序/均值/方差/最大值
最近有个项目需要使用C++ STL的vector容器,然后做一个排序操作。STL很强大,有它自己的排序方法。std::sort(数组起始指针,数组尾指针,排序规则);举例如下://参考文献,sort对结构体排序//排序方法,sort(数组起始指针,数组尾指针,排序规则);//数组起始指针,数组尾指针是左闭右开;//排序规则可以省略,也可以自己写;//https://blog.csdn.net/qq_40828914/article/details/80670151#include原创 2020-10-21 10:56:51 · 2053 阅读 · 0 评论 -
开源项目推荐:C++单元测试框架googletest/Catch2/QtTest
单元测试,一直用的是googletest,使用时只需要下载源码编译出库,在测试工程中引用即可,googletest提供了很多宏来让我们很轻松的组织测试用例。而Catch2比googletest使用更简单,源码就一个头文件,使用时只需要将Catch2.hpp引用到工程中即可,基本的测试用例组织方法与googletest相似;对于测试夹具,个人认为Catch提供的TEST_CASE+SECTION更简单。1、googletesthttps://github.com/google/googletes.原创 2020-09-16 16:17:52 · 3330 阅读 · 0 评论 -
C++ list,怎么交换任意两个元素的位置?
方法1:顺序遍历list与vector不同,不支持随机访问和数组下标访问。int start = 0, end = 2;//需要交换的两个元素位置CadEntities *p = CADSHAREDDATA->getCadEntities(); list<list<CadPolyline>>::iterator iter1; list<list<CadPolyline>>::iterator iter2; list&l原创 2020-06-05 21:00:24 · 6491 阅读 · 0 评论 -
C++常用类型转换(在Unicode和MBCS之间相互转换函数)
1、C++在Unicode和MBCS之间相互转换函数BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize){ DWORD dwMinSize; dwMinSize = MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, NULL, 0); ...原创 2020-04-01 09:12:29 · 602 阅读 · 0 评论 -
C/C++自己实现remainder函数
VS2010不提供remainder这个函数,自己实现,参考官网http://www.cplusplus.com/reference/cmath/remainder/的原理。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>using ...原创 2020-03-07 13:38:46 · 795 阅读 · 0 评论 -
C标准库头文件和函数速查
<assert.h> #define assert(expr)#define static_assert(expr);<complex.h>(C99)<ctype.h>int isalnum(int ch);int isalpha(int ch);int islower(int ch);int isupper( in...转载 2020-03-07 12:14:39 · 885 阅读 · 0 评论 -
Create a minimal reproducer application
https://stackoverflow.com/help/minimal-reproducible-exampleHow to create a Minimal, Reproducible ExampleWhen asking a question, people will be better able to provide help if you provide code that ...转载 2020-02-18 22:07:28 · 507 阅读 · 0 评论 -
“error C2712: 无法在要求对象展开的函数中使用__try”解决方案
前段时间写了一篇关于C++异常捕获及异常处理的文章:c++异常捕获及异常处理try-throw-catch严格的来说,那不算是一篇完整的文章,更多的是提出我的疑惑。顺便总结了一下网友关于C++异常捕获及异常处理给出的精炼的示例。至今,上文提到的疑惑本菜鸟都没有完全解开。于是,我就选择了用 __try __except 来捕获及处理异常。经过测试,我想捕获的异常用 __try __ex...转载 2020-01-16 11:51:09 · 951 阅读 · 0 评论 -
C/C++中32位和64位的sizeof()和memcpy()的区别
一、sizeof32位:Size of char is: 1Size of unsigned char is: 1Size of signed char is: 1Size of int is: 4Size of short is: ...原创 2020-01-16 09:34:19 · 1893 阅读 · 0 评论 -
C++编译提示宏重定义了,怎么办?
C++编译提示宏重定义了,怎么办?如果需要重新定义,要这样,先取消定义,再重新定义:#ifdefNUMPENS//firecat宏重定义#undefNUMPENS#endif#ifndefNUMPENS#defineNUMPENS256#endif#ifdefPI//宏重定义解决办法#undefPI#endif#ifndefPI#defineP...原创 2019-11-14 15:43:51 · 10615 阅读 · 0 评论 -
让C++控制台程序停下来,实现暂停功能
1、Windows#include <stdlib.h>方法1system( "pause ");方法2getchar();方法3Sleep();2、Linuxgetchar();原创 2019-10-29 22:46:30 · 1996 阅读 · 0 评论 -
类的构造函数可以私有吗?
文章来源:http://liudang.blogbus.com/logs/2049383.html通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?没错,我也知道这将会使构造函数成为私有的,这意味着什么? 我们知道,当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不转载 2014-03-05 23:05:17 · 4438 阅读 · 1 评论 -
C++中友元(友元函数和友元类)的用法和功能
文章来源:http://blog.csdn.net/adriano119/article/details/5914443 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还转载 2014-02-25 12:20:41 · 1065 阅读 · 0 评论 -
C++访问类的私有成员变量的方法(友元函数、友元类)
// win32Test.cpp : Defines the entry point for the console application.//#include "stdafx.h"class A{public:A(){;}~A(){;}public:int fun(A& one){//表达式1:错误//return one.fun原创 2014-03-06 11:28:38 · 20653 阅读 · 0 评论 -
VS2010下安装和使用STLport库
1.去官网http://www.stlport.org/下载最新的STLport,我下载了STLport-5.2.1.tar.bz2,它是纯净的源码,需要用户自己编译。2.VS2010编译步骤:(解压文件STLport-5.2.1.tar.bz2到路径D:\tmpcode\STLport-5.2.1为例)文本打开D:\tmpcode\STLport-5.2.1\stlport\stl\_c原创 2014-03-07 16:12:27 · 3513 阅读 · 0 评论 -
如何给VC之Win32生成的.exe文件添加版本信息
插入 资源 版本 新建 修改你的版本信息 关闭版本信息文件然后会提示你保存 保存在工程目录下 然后单击左侧的 FILEVIEW Resource Files 右键 添加文件到目录 选择你的rc文件 编译看看原创 2014-07-25 10:47:10 · 4970 阅读 · 0 评论 -
<CR><LF>回车与换行
CR+LF是windows下文本文件的标准换行符,C语言中记做\r\n。CR :Carriage Return 回车。LF:Line Feed 换行。原创 2014-06-23 11:08:28 · 4888 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
文章来源:http://blog.csdn.net/pongba/article/details/19130转载 2014-08-14 18:53:20 · 784 阅读 · 0 评论 -
设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式分为三种类型,共23种。创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模原创 2015-04-10 15:52:56 · 732 阅读 · 0 评论 -
C++中的单例模式(★好文章firecat推荐,多关注原作者的博客★)
文章来源:http://blog.csdn.net/hackbuteer1/article/details/7460019单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统转载 2015-04-24 14:07:39 · 707 阅读 · 0 评论 -
派生类的构造函数的初始化列表问题,Widget::Widget(QWidget *parent) :QWidget(parent)
该如何理解下面段代码的第二行QWidget(parent)?Widget::Widget(QWidget *parent) : QWidget(parent),//???? ui(new Ui::Widget){ ui->setupUi(this);}一、派生类不能在成员初始化列表中直接初始化基类的成员初始化基类成员构造函数是不可继承的。因此......原创 2014-02-20 17:47:50 · 18032 阅读 · 2 评论 -
volatile(★好文章推荐★)
文章来源:百度百科就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。作用编辑volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直转载 2015-04-28 17:50:19 · 834 阅读 · 0 评论 -
软件系统架构
软件系统架构:使用视点和视角与利益相关者合作(原书第2版)作 者[英] Nick Rozanski,Eoin Woods 著,侯伯薇 译出 版 社机械工业出版社出版时间2013-5-1面向模式的软件架构,卷1:模式系统作 者(德)布施曼 等著,袁国忠 译出 版 社人民邮电出版社出版时间2013-11-1面向模式的软件架构,卷2:并发和原创 2015-05-16 18:16:15 · 1256 阅读 · 0 评论 -
宏"__FUNCTION__" 和" __LINE__ "
__FUNCTION__,当前函数名,类型char const*__LINE__, 在单前文件中的行,类型int用于日志中,方便查错。例如:void func(){ printf("source line %d, in function %s",__LINE__,__FUNCTION__);} int main(){原创 2015-06-19 16:32:32 · 931 阅读 · 0 评论