C++
C++相关内容
aspiretop
擅长osg、osgearth三维开发、熟练使用QT、C++
展开
-
C++使用spdlog输出日志文件
首先在github上下载spdlog源码,不想编译成库的话,可以直接使用源码,将include文件夹下的spdlog文件夹,拷贝至代码所在路径,然后。配置包含目录为代码所在目录。原创 2024-06-17 22:18:07 · 270 阅读 · 0 评论 -
c++使用zlib对字符串进行压缩和解压
官网下载zlib库编译后就能使用。原创 2023-08-24 17:40:35 · 1516 阅读 · 0 评论 -
基于libevent的tcp服务器
centos7下安装libevent库。原创 2023-08-15 16:55:32 · 891 阅读 · 0 评论 -
boost下的asio异步高并发tcp服务器搭建
C++ 网络编程 asio 使用总结 - 知乎 (zhihu.com)原创 2023-08-14 16:28:44 · 1402 阅读 · 0 评论 -
基于epoll的TCP服务器端(C++)
网络编程——C++实现socket通信(TCP)高并发之epoll模式_tcp通信c++ 多客户端epoll_n大橘为重n的博客-CSDN博客网络编程——C++实现socket通信(TCP)高并发之select模式_n大橘为重n的博客-CSDN博客原创 2023-08-11 16:25:16 · 827 阅读 · 0 评论 -
TCP收发信息(C++)
tcp和udp的区别之一,即tcp是有连接的,udp是无连接的,udp收发数据的代码可以独立运行,tcp发数据前必须确保收数据的一方是打开的,否则无法建立连接。原创 2023-08-10 14:47:50 · 1106 阅读 · 0 评论 -
C++使用rapidjson读写json数据
rapidjson是腾讯的高效C++ Json解析器,只有头文件,可跨平台使用。原创 2023-07-11 09:56:34 · 770 阅读 · 0 评论 -
ZMQ在windows下配合VS2017使用(c++)
zmq将socket进行了封装,可以快速在两个进程间进行通信。原创 2023-07-06 17:31:21 · 912 阅读 · 0 评论 -
进程、线程、协程
位于线程之上,一个线程可以包含多个协程,解决线程过多时,阻塞时间过长问题。例如有10000个单独的任务需要执行,如果用10000个线程的话,每个线程最少需要4M内存,总共内存就需要39G,可能实际服务器满足不了。并且线程多,会导致总的线程切换时间变长。操作系统分配资源的最小单位。cpu分配资源的最小单位。原创 2023-06-01 17:24:51 · 56 阅读 · 0 评论 -
进程通信和线程通信方式
多进程、多线程同步(通讯)的方法_多进程同步_逢青丶的博客-CSDN博客原创 2023-06-01 16:37:19 · 47 阅读 · 0 评论 -
C++线程同步方式
为解决以上问题,需要在两个线程同时修改同一个变量时,让其中一个先改,另一个等候。原创 2023-06-01 16:24:45 · 112 阅读 · 0 评论 -
控制台输出彩色内容
【代码】控制台输出彩色内容。原创 2023-05-15 16:03:57 · 217 阅读 · 0 评论 -
select、poll、epoll详解
linux系统下,所有文件:普通文件、目录文件、链接文件和设备文件,都可以看作文件。系统启动后,标准输入对应的文件描述符是0,标准输出是1,标准错误是2,此时如果新打开一个文件,其对应的文件描述符就是3,后面以此累加。以4G内存的电脑为例子,系统内核会占1G左右,叫内核空间,其他内存空间就属于用户空间,约3G左右,用户进程不能直接操作内核。对于linux系统,内核空间占高1G字节,用户空间占低3G字节。内核有控制进程的能力,进程在运行时,可以被cpu挂起,然后恢复之前挂起的某个进程,这个过程叫进程切换。原创 2023-03-22 22:32:27 · 423 阅读 · 0 评论 -
C++下使用glog教程
glog是一个输出日志的库,类似std::cout的功能,但是其输出更加规范标准,并且分为4个不同等级,最后将输出结果保存为log日志。INFOWARNINGERROR和FATAL。原创 2023-03-05 17:04:28 · 1241 阅读 · 0 评论 -
C++下使用gflags教程
gflags主要是为了运行程序时,临时修改输入参数方便,如果没有指定参数,则使用默认参数。例如有一个可执行程序connect.exe,用来向指定ip和port发送udp数据,如果不指定ip地址和端口号的话,则向一个默认的ip和端口发数据,如果用户希望自定义ip和端口,可以将参数在运行程序时指定,例如:connect.exe --ip=227.0.0.23 --port=8989。如果不用gflags的话,用户一般需要按顺序在指定位置输入参数,或者通过配置文件修改。原创 2023-03-04 20:45:47 · 736 阅读 · 0 评论 -
C++高低字节交换
8位bit高低位交换。原创 2023-02-17 18:38:02 · 1296 阅读 · 0 评论 -
C++读取二进制格式文件并转为char*
【代码】C++读取ascii格式文件并转为char*原创 2023-02-16 22:58:23 · 1010 阅读 · 0 评论 -
C++读取txt中16进制的字符串,并将其存入char*数组
【代码】C++读取txt中16进制的字符串,并将其存入char*数组。原创 2023-02-16 18:48:24 · 702 阅读 · 0 评论 -
cmake、make、gcc介绍及使用
【代码】cmake、make、gcc介绍及使用。原创 2023-01-04 10:33:23 · 159 阅读 · 0 评论 -
C++实现STL模板vector
【代码】C++实现STL模板vector。原创 2022-12-20 17:18:23 · 85 阅读 · 0 评论 -
C++运算符重载operator
【代码】C++运算符重载operator。原创 2022-12-20 15:12:45 · 161 阅读 · 0 评论 -
c++智能指针用法
智能指针一共有4个,分别是shared_ptr,unique_ptr,weak_ptr,auto_ptr,最后一个被弃用了,主要是前面三种。作用是自动回收内存,不需要是delete,原理是智能指针内部有个计数器,每当创建一次对象计数加一,销毁一次计数减一,当计数等于0时自动释放对象。原创 2022-12-10 16:45:03 · 1566 阅读 · 0 评论 -
C++实现web服务器(Linux)
运行./server后其实服务器已经启动,就不需要下面的这些步骤,下面步骤只是做一个监听,不影响使用。在浏览器中输入127.0.0.1:8080即可看到如下页面。首先下载项目到linux系统中,然后进入yazi-web-main目录,使用make编译,编译结束后运行。以下是监听端口,需要先下载net-tools。原创 2022-12-10 14:43:14 · 1610 阅读 · 2 评论 -
vector的size和capicity
vector底层是数组,地址连续,和数组区别是可以动态扩容。原创 2022-12-10 14:24:01 · 297 阅读 · 0 评论 -
C++回调函数
回调函数主要用来完成这样一个功能,在一个新函数里,要用到其他函数的功能,然后把其他函数作为指针传入,在新函数里使用其他函数。那为什么不直接通过函数名调用其他函数呢?其实一般软件开发可以不用回调函数,除非设计一个框架,需要提高框架的普适性,就将函数作为入参,提供给使用者。sort函数的第三个参数就是回调函数,用来确定的递增排序还是递减,或者其他类型的排序。原创 2022-11-21 16:21:06 · 374 阅读 · 0 评论 -
生产者消费者模型
【代码】生产者消费者模型。原创 2022-11-01 21:14:19 · 78 阅读 · 0 评论 -
C++友元函数和友元类(friend)
友元存在的作用:类成员有public,protected,private,成员类型为private时,只有类对象可以访问。而现在有个需求,需要外部的函数或类,可以访问这个类的private成员,友元就是解决这个问题的。可以理解为,把外部的函数或类,当作朋友,让其可以访问private成员。具体用法是,在需要外部函数访问private的类内,通过friend关键字,声明外部函数或类是友元函数,指定其可以访问private成员变量。原创 2022-10-13 21:33:04 · 863 阅读 · 0 评论 -
C++模板及模板类(详解)
为什么要使用模板?以及为什么要使用模板类?为了减少重复代码,提高效率。比如你要实现一个相加函数,相加的类型有int,double,float,string,char等等,它们实现的功能相同,唯一不同的地方是类型,这个时候就能使用模板了;同样的,模板类也是用在这个场景下的,比如你要创建栈stack这个类,里面可以写很多类型,int,double,string等等,这个时候就可以使用类模板,实际的vector,pair,map,stack等STL也就是这么实现的。原创 2022-10-13 10:52:01 · 1493 阅读 · 0 评论 -
C++指定读取dll的路径
C++指定读取dll的路径。原创 2022-09-05 19:40:40 · 1169 阅读 · 0 评论 -
C++解析XML文件
包含TinyXml库。原创 2022-07-19 20:32:38 · 1197 阅读 · 0 评论 -
C++解析json文件
C++解析json原创 2022-07-19 19:20:15 · 1664 阅读 · 0 评论 -
C++读取ini格式配置文件
[]方括号下面的为一个节,通过变量名索引后面的值。原创 2022-07-19 15:38:43 · 10433 阅读 · 3 评论 -
VS2017下C++通过JoyStick获取手柄按键事件--北通
把游戏手柄通过USB连接到电脑,如何通过C++获取手柄的按键响应呢?可以通过 JoyStick库来实现,windows10下的VS2017自带这个库,所以可以直接用。原创 2022-07-17 16:40:59 · 2625 阅读 · 0 评论 -
C++获取http网站json返回值并解析
#include <stdio.h> #include <afxinet.h>#include <atlstr.h>#include <atlconv.h>#include <json/json.h>#include <iostream>#include <string>void readJson(std::string jsonData,double lng,double lat){ Json:.原创 2022-05-19 22:05:24 · 1461 阅读 · 1 评论 -
VS2017卸载重装后打开项目各种报错,但是代码没问题
问题描述:VS重装后,打开之前的工程,根本无法运行,并且标红报错的非常多,而且报错的地方明显没有错,但显示却是未定义或者语法错误,因为之前是苦于正常运行的,所以确保是代码没问题。问题定位:因为代码是没问题的,所以只能是VS配置的问题了,尝试重装VS,或者增加能想到的SDk,依旧不能解决,这时候忽然想到,自己引入第三方库的时候,建立了项目属性表,项目属性表版本胡不会有差异,因此删除旧的项目属性表,建立新的,然后问题就解决了,所以最终是版本问题导致的。...原创 2022-05-18 11:11:40 · 1385 阅读 · 0 评论 -
linux下通过命令行发送一条UDP数据
echo “hello world” > /dev/udp/224.0.0.2/14555运行上方代码,即可向IP为224.0.0.2,端口为14555发送内容为hello world的数据原创 2022-05-07 17:20:43 · 2719 阅读 · 0 评论 -
C++值传递、指针传递、引用传递
代码#include<iostream>using namespace std;int sqrt1(int a){ int b = a; return b * b;}int sqrt2(int* a){ return (*a)*(*a);}int sqrt3(int& a){ return a * a;}int main(){ int n=10; int o = 5; int *k = &o; int l = 1; int&原创 2021-07-05 00:35:08 · 99 阅读 · 0 评论 -
C++完成UDP接收数据功能
#include <stdio.h>#include <WinSock2.h>#pragma comment(lib,"WS2_32.lib")int main(void){ WSADATA wsd; // 初始化Socket的变量 SOCKET s; // 用于通信的Socket句柄 SOCKADDR_IN sRecvAddr, sSendAddr; // 分别为接收地址和发送地址 USHORT uPort = 14555; .原创 2021-07-20 20:51:54 · 5801 阅读 · 4 评论 -
win10下UDP组播跨主机发送与接收C++
一、代码发送端send.cpp#include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> #pragma comment(lib, "ws2_32.lib") int main(){ int iRet = 0; WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET sock = sock原创 2022-01-29 00:31:51 · 2870 阅读 · 0 评论 -
C++类的派生
#include <iostream>using namespace std;class Base{public: int a; int b;public: void printNum() { cout << "a = " << a << " b = " << b << endl; } void printString() { cout << "String" << endl;.原创 2022-03-23 11:37:26 · 1500 阅读 · 0 评论