![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c/c++语言基础
c/c++语言基础
weixin_41454036
IT学姐不一定是女生!!
展开
-
recv
intrecv(SOCKETs, charFAR*buf, intlen, intflags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,(1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据原创 2020-11-20 16:28:30 · 391 阅读 · 0 评论 -
输出debug文件打印日志
static int WriteFileAppend(const CHAR* fileName, const CHAR * res, DWORD size){ FILE *fp; if (fopen_s(&fp, fileName, "ab+") != 0) { return 0; } fwrite(res, sizeof(CHAR), size, fp); fwrite("\r\n", sizeof(CHAR), strlen("\r\n"), fp); fclose(fp);原创 2020-11-19 15:15:28 · 1038 阅读 · 0 评论 -
tolower
tolower是一种函数,功能是把字母字符转换成小写,非字母字符不做出处理。和函数int _tolower( int c )功能一样,但是_tolower在VC6.0中头文件要用ctype.h。#include<string.h>#include<stdio.h>#include<ctype.h>#include<stdlib.h>int main(){ int i; char string[] = "THIS IS A STRIN原创 2020-11-16 15:33:45 · 119 阅读 · 0 评论 -
assert
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参原创 2020-11-11 12:00:12 · 140 阅读 · 0 评论 -
strstr()
char *strstr(const char *haystack, const char *needle)在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。参数haystack – 要被检索的 C 字符串。needle – 在 haystack 字符串内要搜索的小字符串。返回值该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。#include <stdio.h>#include原创 2020-11-05 11:59:17 · 287 阅读 · 0 评论 -
sprintf
#include <stdio.h>int main( void ){char buffer[200], s[] = “computer”, c = ‘l’;int i = 35, j;float fp = 1.7320534f;// 格式化并打印各种数据到bufferj = sprintf( buffer, " String: %s\n", s ); // C4996j += sprintf( buffer + j, " Character: %c\原创 2020-11-05 11:56:49 · 132 阅读 · 0 评论 -
2020-11-03
memcmp函数的原型为 int memcmp(const void *str1, const void *str2, size_t n));其功能是把存储区 str1 和存储区 str2 的前 n 个字节进行比较。该函数是按字节比较的,位于string.h。 [1]int memcmp(const void *str1, const void *str2, size_t n));参数str1-- 指向内存块的指针。str2-- 指向内存块的指针。n-- 要被比较的字节数。功能比较内存区域bu原创 2020-11-03 17:02:13 · 55 阅读 · 0 评论 -
strcpy
strcpy把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*。原型声明:char strcpy(char dest, const char *src);头文件:#include <string.h> 和 #include <stdio.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间...原创 2020-10-21 11:37:06 · 86 阅读 · 0 评论 -
memcpy
void *memcpy(void destin, void source, unsigned n);参数destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void 指针。source-- 指向要复制的数据源,类型强制转换为 void 指针。n-- 要被复制的字节数。返回值该函数返回一个指向目标存储区destin的指针。功能从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。 [2]...原创 2020-10-19 18:56:33 · 275 阅读 · 0 评论 -
memcmp函数
memcmp函数的原型为 int memcmp(const void *str1, const void *str2, size_t n));其功能是把存储区 str1 和存储区 str2 的前 n 个字节进行比较。函数原型int memcmp(const void *str1, const void *str2, size_t n));参数str1-- 指向内存块的指针。str2-- 指向内存块的指针。n-- 要被比较的字节数。功能比较内存区域buf1和buf2的前count个字节。头文原创 2020-10-19 17:29:40 · 1246 阅读 · 0 评论 -
字符编码环境设置:setlocale函数
setlocale函数原形为:char *setlocale( int category, const char *locale );头文件:<locale.h>所支持的操作系统为: Win 95, Win NT对于简体中文可以使用如下设置:setlocale( LC_ALL, “chs” ); (编码ANSI)调用setlocale原因: 在C/C++语言标准中定义了其运行时的字符集环境为"C",是ASCII字符集的一个子集,mbstowcs在工作时会将cstr中所包含的字符串看原创 2020-10-14 11:18:47 · 711 阅读 · 0 评论 -
C/C++程序员发展路线
前言c/c++是一门略微比其他语言难一点的语言,它更偏向于底层,而且它包含的思想比较多,如果你只学习语言本身,不关注它所涉及的思想,将会在未来的实际应用中举步维艰,所以学习该门语言需要你付出双倍的精力来学习它的附属知识。当你了解它的附属知识时你的基础架构就基本搭建完毕,不用你全部精通,但是最少要知道它是什么,可以做什么,怎么入手用。这样将在你以后的开发中为你避开好多坑。学习语言后你要做哪些语言本身的思想都是贯通的,无论你学习C/C++,JAVA还是PHP,Object_C,Python。他们都是一种思原创 2020-10-09 11:14:10 · 802 阅读 · 1 评论 -
本贾尼·斯特劳斯特卢普
本贾尼·斯特劳斯特卢普本贾尼·斯特劳斯特卢普(Bjarne Stroustrup,1950年6月11日-),丹麦人,计算机科学家,在德克萨斯A&M大学担任计算机科学的主席教授。他最着名的贡献就是开发了C++程序设计语言。 [1]1982年,美国AT&T公司贝尔实验室的本贾尼博士在C语言的基础上引入并扩充了面向对象的概念,发明了—种新的程序语言。为了表达该语言与C语言的渊源关系,它被命名为C++。而本贾尼博士被尊称为C++语言之父。...原创 2020-10-09 10:18:00 · 416 阅读 · 0 评论 -
error C2011: “sockaddr”:“struct”类型重定义错误 ----解决办法
来源:https://blog.csdn.net/ccnu027cs/article/details/103593923很多程序比如MFC程序它本身就不是直接包含windows.h,你找不到它的包含位置。也报这个错误。 windows.h和winsock2.h存在有类型重定义,往往体现在VC程序中包含winsock2.h时出现编译错误:error C2011: “sockaddr_in”:“struct”类型重定义网友提出的解决办法是将#include<windows.h>之前 #i原创 2020-09-28 10:27:42 · 3579 阅读 · 2 评论 -
Proto3:C++基本使用
Proto3:C++基本使用来源:https://www.cnblogs.com/lianshuiwuyi/p/12228544.html原创 2020-09-27 15:54:42 · 289 阅读 · 0 评论 -
C++ 多线程的创建
C++ 多线程https://www.runoob.com/cplusplus/cpp-multithreading.html以下简单的实例代码使用 pthread_create() 函数创建了 5 个线程,每个线程输出"Hello Runoob!":#include <iostream>// 必须的头文件#include <pthread.h> using namespace std; #define NUM_THREADS 5 // 线程的运行函数void原创 2020-09-25 10:56:59 · 308 阅读 · 0 评论 -
这些C++的练手项目,相当于你2年的工作经验,拿走不谢
多年以后,你已经是一名技术总监,有一个美丽的妻子,两个孩子;你已经拥有了现在的你想都不敢想的一切;那时,你也一定会忘记,今天这篇教程,如同一颗石子,铺就过你前进的路。下面是我们的老师根据现有资源整理的一个C++学习路径。通过使用 C++ 语言实现 Web 服务器,Markdown 解析器,内存池以及 Docker 容器管理工具等,学习并实践 C++ 编程基础,C++ 11/14 标准,C++ 图像处理及增强现实技术。完成本路径所有教程,将能够使用 C++ 独立实现复杂的应用程序。“Repetition原创 2020-09-25 09:41:42 · 2208 阅读 · 1 评论 -
win32控制台、win32工程、MFC工程的区别
空项目控制台win 32mfc问2个问题即可。1.控制台 VS win32 mfc?嗯,有不有脸?有脸,选win32或mfc。没有脸,选控制台。(脸就是窗口,就是window…s)(这个有脸)(这个没脸)控制台与win32 mfc:交互方式的不同,前者是CML(命令模式),后者是GUI(用户界面)。2.MFC VS win32嗯,是不是“国”字脸?是“国”字脸,选mfc。是DIY的脸,选win32。(国字脸1)Visual Studio C++ 创建新项目蹦出来如原创 2020-09-15 09:52:23 · 282 阅读 · 0 评论 -
OllyDBG 破解入门教程
原链接:https://www.cnblogs.com/ECJTUACM-873284962/p/7653285.html一、OllyDBG 的安装与配置OllyDBG 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe即可:OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试转载 2020-09-11 16:02:09 · 3505 阅读 · 0 评论 -
constexpr和const的区别
const并不能代表“常量”,它仅仅是对变量的一个修饰,告诉编译器这个变量只能被初始化,且不能被直接修改(实际上可以通过堆栈溢出等方式修改)。而这个变量的值,可以在运行时也可以在编译时指定。constexpr可以用来修饰变量、函数、构造函数。一旦以上任何元素被constexpr修饰,那么等于说是告诉编译器 “请大胆地将我看成编译时就能得出常量值的表达式去优化我”。...原创 2020-09-11 15:01:38 · 421 阅读 · 0 评论 -
HWND
在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口最小化等等。实际上许多Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、原创 2020-09-10 14:16:32 · 2439 阅读 · 0 评论 -
HMODULE表示模块句柄 Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
HMODULE表示模块句柄Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。enable 使能够; 使有机会;原创 2020-09-10 13:59:21 · 393 阅读 · 0 评论 -
c++面试岗位要求
岗位要求:1.精通Linux服务端编程;2.精通C、C++中某一种编程语言;3.精通网络编程、多线程、内存管理、大规模分布式系统等;4.有事件驱动编程、协程使用经验者优先;5.熟悉Nginx、lighttpd、libevent、boost.asio等任何一种软件或网络库者优先;6.精通shell、python、lua等一种脚本语言;7.有TCP/UDP传输协议优化经验者优先;8.有P2P传输系统开发经验者优先。任职资格1、精通C++、STL,具备良好编程习惯,掌握面向对象编程思想;2、原创 2020-09-10 10:47:21 · 2344 阅读 · 0 评论 -
qt安装参考教程
一、QT软件下载Qt 5.9 之后的安装包与之前相比,不再区分 VS 版本和 MinGW 版本,而是全都整合到了一个安装包中。因此,与之前的安装包相比,体积也是大了不少,以前是 1G 多,现在是 2G 多。QT5.9.0安装包QT5.8.0安装包下载地址:http://download.qt.io/archive/qt/各目录说明如下:①gdb是针对Android开发的调试器。②jom可以百度一下,http://qt-project.org/wiki/jom ,是nmake克隆版,支持多条独立原创 2020-09-10 10:11:51 · 539 阅读 · 0 评论 -
#pragma region
#pragma region是Visual C++中特有的预处理指令。它可以让你折叠特定的代码块,从而使界面更加清洁,便于编辑其他代码。折叠后的代码块不会影响编译。你也可以随时展开代码块以进行编辑等操作。格式:#pragma region name/**/#pragma endregion comment如上边所示,需要折叠的代码必须包含在#pragma region和#pragma endregion之间。#pragma region和#pragma endregion之后可以添加一些用来注原创 2020-09-09 20:19:06 · 588 阅读 · 0 评论 -
protobuf的下载、编译和使用
一 背景 工作中临时需要使用 protobuf v3.0.2 做消息格式转换,折腾了很久才搞定,这里特意做一个记录。二 准备工作 全程使用的电脑为公司的win7 64位旗舰版,已经预先安装VS2013和cmake3.10.2,需要注意的是,如果cmake版本过低,编译时会提示失败,需要更新的cmake版本,重新执行操作。下载protobuf源代码,公司内网可以访问github,因此选择从github直接下载ZIP包:v3.0.2.zip,这里解压到 “D:\Documents\Program\T转载 2020-09-09 12:28:29 · 776 阅读 · 0 评论 -
VMware虚拟机下安装CentOS系统超详细教程
原教程链接https://jingyan.baidu.com/article/fdffd1f8736173f3e98ca1e3.htmlhttps://archive.kernel.org/centos-vault/6.5/isos/x86_64/cenTOS的安装路径https://archive.kernel.org/centos-vault/很多童鞋想学习以下Linux系统的操作,但又不想安装Linux系统(操作不习惯),这时就可以考虑将系统装在虚拟上,既不影响主系统的使用,又可以方便地进行转载 2020-09-09 10:40:01 · 1177 阅读 · 0 评论 -
数据结构大致包含以下几种存储结构:
数据结构大致包含以下几种存储结构:线性表,还可细分为顺序表、链表、栈和队列;树结构,包括普通树,二叉树,线索二叉树等;图存储结构;线性表线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”关系的数据就可以使用线性表来存储。例如,存储类似 {1,3,5,7,9} 这样的数据时,各元素依次排列,每个元素的前面和后边有且仅有一个元素与之相邻(除首元素和尾元素),因此可以使用线性表存储。线性表并不是一种具体的存储结构,它包含顺序存转载 2020-09-08 15:39:36 · 6601 阅读 · 0 评论 -
C++后端开发技术栈
作为一名C++程序员,尤其是想在互联网开发热潮中有一席之地,转做后端开发,需要了解未来的工作所需要用到的一些技术栈,好为自己好好规划未来的职业生涯。先列一下目前我能想到的:c++语言,面向对象, stl库等linux操作系统,各种调试器(如gdb)和编译器工具(makefile,gradle)数据结构与常用算法设计模式多线程与并发处理网络编程(包括socket, i/o模型,多线程 多进程等)常用的开源服务器(nginx, redis等),熟悉源代码,能做定制开发转载 2020-09-08 15:07:21 · 450 阅读 · 0 评论 -
STL (模板库
序列式容器向量(vector) 连续存储的元素列表(list) 由节点组成的双向链表,每个结点包含着一个元素双端队列(deque) 连续存储的指向不同元素的指针所组成的数组适配器容器栈(stack) 后进先出(LIFO)的值的排列 队列(queue) 先进先出(FIFO)的值的排列 优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 关联式容器集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素队的谓词排原创 2020-09-08 14:43:56 · 126 阅读 · 0 评论 -
Boost.Asio同步使用计时器和异步使用计时器
Timer.1-同步使用计时器#include <iostream>#include <boost / asio.hpp>int main(){ boost :: asio :: io_context io; boost :: asio :: steady_timer t(io,boost :: asio :: chrono :: seconds(5)); t.wait(); std :: cout <<“您好,世界!” << s原创 2020-09-08 14:19:21 · 218 阅读 · 0 评论 -
深入 ProtoBuf - 简介Protobuf 使用指南
简单来讲, ProtoBuf 是结构数据序列化[1] 方法,可简单类比于 XML[2],其具有以下特点:语言无关、平台无关。即 ProtoBuf 支持 Java、C++、Python 等多种语言,支持多个平台高效。即比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单扩展性、兼容性好。你可以更新数据结构,而不影响和破坏原有的旧程序序列化[1]:将结构数据或对象转换成能够被存储和传输(例如网络传输)的格式,同时应当要保证这个序列化结果在之后(可能在另一个计算环境中)能够被重建回原来原创 2020-09-08 13:43:12 · 969 阅读 · 1 评论 -
力扣LeetCode[每日一题]:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]===========================================================class Solution {public:vector<vector> combine(int n, int k) {dfs(temp,n,k,0);原创 2020-09-08 10:24:01 · 1887 阅读 · 0 评论 -
push_back
push_back是编程语言里面的一个函数名。如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。原创 2020-09-08 10:17:04 · 361 阅读 · 0 评论 -
vector<int>
一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。(5)使用迭代器访问原创 2020-09-08 10:09:38 · 10584 阅读 · 0 评论 -
vector<vector<int>> combine(int n, int k)
定义了一bai个vector容器,元素类型为vector,初始化du为包含m个vector对象,每个对zhi象都是一个新创立的vector对象的拷贝,而dao这个新创立的vector对象被初始化为包含n个0。原创 2020-09-08 09:47:39 · 266 阅读 · 0 评论 -
DllMain
跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。简介编辑The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅原创 2020-09-07 11:15:49 · 237 阅读 · 0 评论 -
C++资料大全
C++资料大全关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。C++标准库,包括了STL容器,算法和函数等标准库1 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。2 Standard Template Library:标准模板库3 C POSIX library : POSIX系统的C标准库规范4 ISO C++ Standards Com转载 2020-09-04 17:41:01 · 1044 阅读 · 1 评论 -
‘fopen‘: This function or variable may be unsafe.
解决This function or variable may be unsafe听语音原创|浏览:62798|更新:2014-12-25 11:12解决This function or variable may be unsafe1解决This function or variable may be unsafe2解决This function or variable may be unsafe3解决This function or variable may be unsafe4解决This func转载 2020-09-04 11:27:45 · 352 阅读 · 0 评论 -
C/C++二维码生成库qrencode的使用和 Cmake的安装
1、在 https://fukuchi.org/works/qrencode/ 下载qrencode库,我下的是qrencode-4.0.2.tar.gz版本。2、为该库生成vs解决方案,这里用到cmake跨平台编译工具,首先安装cmake,下载windows的cmake安装包,下载地址: https://cmake.org/download/我下载的是 https://cmake.org/files/v3.12/cmake-3.12.0-rc1-win64-x64.msi 版本安装cmake-3.1转载 2020-09-04 10:35:29 · 864 阅读 · 0 评论