自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 检查IPV4是否合法可用

bool isIPV4Valid(const std::string &szIpAddr){ int nLength = szIpAddr.length(); if( 7 > nLength || 15 < nLength ) //0.0.0.0 ~ 255.255.255.255,所以IP地址字符串长度应为7~15之间 return false; int nNum = -1; //记录IP中的字段值 int nCount = 0; /

2020-07-02 19:45:34 551

原创 C语言宏定义中#、##、#@符号的使用

1、宏定义中#的使用在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。例:#define A(x) #x#define B(x, y) #x"."#y即 A(123) ------> "123" B(123, 456) ------> "123"".""456" std::string str1 = A(test); //即str1 = “test”; st

2020-06-03 16:16:16 2176

原创 获取cpp文件名、函数名及行号

_ _FILE_ _ :获取文件名;_ _FUNCTION_ _:获取程序函数名称;_ _LINE_ _ :获取当前所在行号;int main(){QString szFile = __FILE__;QString szFunc = __FUNCTION__;int nLine = __LINE__;}...

2020-04-20 19:30:02 858

原创 通用双向链表

#pragma once#include <stdio.h>struct GeneralListNode{ GeneralListNode* next; GeneralListNode* pre; void* data; GeneralListNode() { next = NULL; pre = NULL; data = NULL; } ~Ge...

2019-12-02 21:14:23 168

原创 C/C++程序创建多级文件夹

#include <iostream>#ifdef __POSIX__#include <unistd.h>#include <dirent.h>#else#include <io.h>#include <direct.h>#endif // __POSIX__int makeDirs(const char* szDi...

2019-11-07 15:47:48 890

原创 tinyxml使用

文件组成:2个头文件:tinystr.htinyxml.h4个源文件:tinystr.cpptinyxml.cpptinyxmlerror.cpptinyxmlparser.cpp下载地址https://sourceforge.net/projects/tinyxml/vs编译:“项目” >> “属性” >> “C/C++” >>...

2019-09-03 16:59:17 169

原创 Linux系统学习笔记——shell

GNU/Linux shell是一种特殊的交互工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。将多个shell命令放入文件中作为程序执行,这些文件被称作shell脚本。...

2019-09-03 11:33:33 123

原创 Linux系统学习笔记——文件系统管理

Linux内核支持通过不同类型的文件系统从硬盘中读写数据。Linux服务器所访问的所有硬盘都必须格式化成图中所列文件系统类型中的一种。Linux内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS将信息都缓存在内存中。...

2019-09-03 11:21:13 236

原创 Linux系统学习笔记——硬件设备管理

任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交互数据。在Linux内核中有两种方法用于插入设备驱动代码:编译进内核的设备驱动代码;可插入内核的设备驱动代码;Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3中分类:字符型设备文件块设备文件网络设备文件字符型设备文件是指...

2019-09-03 11:04:00 307

原创 Linux系统学习笔记——软件程序管理

Linux操作系统将运行中的程序称为进程。内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。自启动程序一些Linux版本中使用一个表来管理在系统开机时要自动启动的进程,表通常位于专门文件**/etc/inittab中;另一些系统则采...

2019-08-30 17:55:09 153

原创 Linux系统学习笔记——系统内存管理

操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际上并不存在的内存)。内核通过硬盘上的存储空间来实现虚拟内存,这块区域成为交换空间(swap space)。内核不断在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。内存存储单元按组划分成很多块,这些块称为页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护...

2019-08-30 17:14:33 167 1

原创 Linux系统学习笔记——内核

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下四种功能:1、系统内存管理;2、软件程序管理;3、硬件设备管理;4、文件系统管理;...

2019-08-30 16:18:04 123

原创 判断单向链表中是否存在环

判断单向链表中是否存在环编程思路:追赶问题:在同一圆环上,当两个物体以不同的速度前进时,他们总能在某个时间点上再次相遇(即当两个指针以不同的移动速度在一个单向链表上移动时,若该链表有环的存在,则这两个指针总会在某一时刻同时指向链表上的同一个节点)。#include struct HasRing { HasRing* pNext; HasRing() { pNext = null...

2019-08-23 17:12:20 163

原创 Qt中使用QSettings读写*.ini格式的文件

内容简介1、使用默认分组创建和读取信息节点;2、在自建分组中创建和读取信息节点;3、在多级分组中创建和读取信息节点;4、若分组中信息节点的key已存在,使用setValue可直接修改该key值节点的相应信息。#include <QSettings>#include <QDebug>int main(int argc, char *argv[]){ ...

2019-06-22 21:51:25 1088

原创 Qt中使用QDomDocument读写XML文件

注意事项1、在*.pro文件中添加 QT += xml;2、xml文件中只能存在一个根节点,如果存在根节点的兄弟节点,则只能读取到第一个根节点的内容。#include <QDomDocument>#include <QFile>#include <QTextStream>#include <QDebug>int main(in...

2019-06-21 22:57:10 5172

原创 Qt鼠标事件,窗口移动

mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit Mai...

2019-06-11 22:31:10 3581

原创 C/C++单向链表

main.cpp#include <stdio.h>#include "SingleList.h"int main(int argc, int *argv[]){ Node *pHead = NULL; for (int i = 0; i < 10; i++) { Node node; node.id = i; pHead = AddNode(pHea...

2019-05-31 20:52:17 163

原创 Qt通过拖放方式在界面中打开文件

拖放打开文件窗口界面的setAcceptDrops属性不许设置为true,否则无法接收拖放事件;QTextEdit的setAcceptDrops属性必须设置为false,否则进行拖放时会进入QTextedit的拖放事件进行响应;如果调试时,无法进入重写的拖放事件,请检查setAcceptDrops的属性设置。mainwindow.h #ifndef MAINWINDOW_H #de...

2019-05-30 21:11:34 2248 3

原创 快速排序、冒泡排序、插入排序、选择排序

1、快速排序void QuickSort(int values[22], int begin, int end){ int left = begin; int right = end; int base = values[(left + right)/2]; while(left <= right) { for(;values[left] < base; left++...

2019-05-22 21:09:12 84

原创 C/C++中scanf、sscanf、fscanf函数用法

#include <stdio.h>#include <stdlib.h>int main(int atgc, int *argv[]){ int a; char buf[100] = {0}; FILE *file = NULL; printf("请输入一个数字:"); scanf("%d", &a); printf("a = %d\n", ...

2019-05-19 10:43:46 1438

原创 C/C++中的printf,sprintf,fprintf使用

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。#include <stdio.h>int main(int argc, char *argv[]){ int a = 3; printf("整数: %d\n", a)...

2019-05-15 22:00:18 1439 1

原创 try语句块和异常处理

异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在C++语言中,异常处理包括:(1)throw表达式(throw expression),异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发了异常。(2)try语句块(try block),异常处理部分使用try语句块处理异常。try语句块以关键字try开始,并以一个或多个catch子句结束。try语...

2019-05-10 17:40:34 1908

原创 布尔值bool

1、bool布尔值只有true和false两种数值,0时为false,其他均为true;2、bool布尔值不应参与运算:bool a = true;bool b = -a; // b = true !!!对大多数运算符来说,布尔类型的运算对象将被提升为int类型,当布尔变量为真,参与运算时将被提升成整数值1,对它求负后的结果是-1,在转换为布尔值并将其作为b的初始值,因此b = true;...

2019-05-10 14:39:22 3078

原创 string使用

1、但字面值和string对象相加时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string;string s1;string s2 = s1 + “,”; //正确string s3 = “hello” + “world”; //错误:两个运算对象都不是string2、cctype头文件中的函数:isalnum© //当c是字母或数字时为真isalpha© //当c是字...

2019-04-28 20:14:51 116

原创 命名空间的using声明

作用域操作符(::)编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字。using声明形式:(1)using namespace::name; 一旦进行了声明,就可以直接访问命名空间中的名字;(2)using namespace namespace;头文件不应包含using声明:因为头文件的内容会拷贝到所有引用它的文件中去,如果头文件李有某个using声明,那么每个使用了该头文件的文...

2019-04-28 19:55:30 303

原创 C++基础知识

1、mian函数的返回类型必须为int,即整数类型。2、IDE:集成开发环境(Integrated Developed Environment)。3、cin:标准输入; cout:标准输出; cerr:输出警告和错误信息; clog:输出程序运行时的一般性信息。4、通过命名空间使用标准库,需要通过使用作用域运算符(::)来指出我们想使用定义在命名空间中的名字,如:std::cin。5...

2019-04-27 11:52:38 90

原创 处理类型

类型别名1、关键字typedef:typedef double wages; //wages是double的同义词typedef wages base, *p; //base是double的同义词, p是double *的同义词2、新标准方法,别名声明(alias declaration):using UI = usigned int; //UI是usigned int的同义词指针、常...

2019-04-27 11:50:36 207

原创 const限定符

1、const对象一旦创建后其值就不能再改变,所以const对象必须初始化,其初始值可以是任意复杂的表达式。2、与非const类型所能参与的操作相比,const类型的对象能完成其中的大部分,但也不是所有的操作都合适。主要的限制就是只能在const类型的对象上执行不改变其内容的操作。3、默认状态下,const对象仅在文件内有效,如果想在多个文件之间共享const对象,必须在变量的声明和定义之前添...

2019-04-27 09:50:15 102

原创 C++引用与指针

引用(reference)并非对象,只是为已经存在的对象起了另外一个名字。另外,引用本身不是一个对象,所以不能定义引用的引用。定义引用时,程序把引用和它的初始值绑定(bind)在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法令引用重新绑定到另外一个对象,因此引用必须初始化。而且,引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。...

2019-04-20 08:43:44 120

原创 C++名字的作用域

作用域(scope)包含了全局作用域(global scope)和块作用域(block scope)。嵌套的作用域:作用域能彼此包含,被包含(或者说被嵌套)的作用域称为内层作用域(inner scope),包含着别的作用域的作用域称为外层作用域(outer scope)。作用域中一旦声明了某个名字,它所嵌套着的所有作用域中都能访问该名字。同时,允许在内层作用域中重新定义外层作用域已有的名字,若...

2019-04-20 07:55:00 222

原创 C++标识符

C++的标识符(identifier)由字母、数字和下划线组成,其中必须以字母或下划线开头。标识符的长度没有限制,但对大小写字母敏感。变量命名规范:1、标识符要能体现实际含义;2、变量名一般用小写字母;3、用户自定义的类名一般以大写字母开头;4、如果标识符由多个单词组成,则单词间应有明显的区分。...

2019-04-20 07:39:17 5630

原创 C++中的初始化和赋值

初始化:创建变量时赋予其一个初始值。赋值:是把对象的当前值擦除,而以一个新值来替代。

2019-04-19 21:50:54 335

原创 C++转义序列

有两类字符程序员不能直接使用:一类是不可打印的字符,如退格或其他控制字符,因为它们没有可视的图符;另一类是在C++语言中有特殊含义的字符(单引号、双引号、问号、反斜线)。转义序列均以反斜线作为开始,C++语言规定的转义序列包括:问号 ?换行符 \n反斜线 \回车符 \r退格符 \b进纸符 \f双引号 "单引号 ’纵向制表符 \v横向制表符 \t报警(响铃...

2019-04-19 20:37:28 745

原创 Qt主窗口:(QMenuBar)创建菜单,状态栏(QStatusBar)使用

mainWindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <qmenu.h>#include <qaction.h>namespace Ui {class MainWindow;}class MainWindow : public ...

2019-03-20 21:54:16 2713 1

原创 QT对话框

QT对话框模态(modal)和非模态(modeless)对话框模态对话框:在没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互。非模态对话框:既可以与它交互,也可以与同一程序中的其他窗口交互。Qt::NonModal :非模态。Qt::WindowModal :阻塞它的父窗口、所有祖先窗口以及它们的子窗口。Qt::ApplicationModal :阻塞整个应用程序的所有窗口...

2019-03-20 21:10:49 391

原创 Qt主窗口框架

主窗口框架:①菜单栏(QMenuBar)。菜单栏包含了一个下拉菜单项的列表,这些菜单项由QAction动作类实现。菜单栏位于主窗口的顶部,一个主窗口只能有一个菜单栏。②工具栏(QToolBar)。工具栏一般用于显示一些常用的菜单项目,也可以插入其他窗口部件,并且是可以移动的。一个主窗口可以拥有多个工具栏。③中心部件(Central Widget)。在主窗口的中心区域可以放入一个窗口部件作为中...

2019-03-20 21:07:25 373

原创 QT槽函数多次响应问题

关于QT槽函数触发两次的问题:如果使用官方的写法(如:on_btn_clicked()),可以不用写connect函数,会默认触发槽函数;如果此时再次使用connect连接,就会导致on_btn_clicked()被执行两次,可以通过以下方式避免:a. 修改槽函数命名,如btn_cLicked;b. 强制指定:connect(ui-&gt;colorDialog_pushButton, ...

2019-03-17 12:52:23 3418 1

原创 标准对话框(颜色对话框、文件对话框、字体对话框、输入对话框、消息对话框、进度对话框、向导对话框)

标准对话框:颜色对话框、文件对话框、字体对话框、输入对话框、消息对话框、进度对话框、向导对话框

2019-03-17 12:41:47 565

原创 QLineEdit(单行文字编辑控件)

QLineEdit用法

2019-01-21 22:10:18 790

原创 QTextEdit的使用(限制输入的字符数的个数,包括纯中文输入或自由输入)

QTextEdit使用#限制QTextEdit的字符数的最大输入量,包括中文字符数或自由字符的最大输入量(纯中文输入、自由字符输入)##UI界面效果图##textEdit.h#ifndef TEXTEDIT_H#define TEXTEDIT_H#include &amp;amp;amp;lt;QMainWindow&amp;amp;amp;gt;namespace Ui {class textEdit;}class ...

2019-01-21 21:57:21 6494

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除