C/C++
余莫星辰
人一定要靠自己。
展开
-
C++汉字与十六进制相互转换
在项目中需要使用C++将汉字与十六进制互相转换,举例: 在UE上打“中国人”得到十六进制是“D6D0B9FAC8CB0D0A”,这是如何转换的,以及如何将char str[]=”D6D0B9FAC8CB0D0A”; 换成汉字放在 char[10]={0}这个数组中呢?#include<stdio.h>#include <string.h>#include<...转载 2018-04-17 17:41:59 · 8444 阅读 · 1 评论 -
c++快速简易入门教程_002构造函数
1 构造函数 运行以下代码,你将会遇到异常错误提示。#include using namespace std;class student{public: char* name; int age; void output(){ cout << name << endl << age << endl; }};void main(){ student st原创 2016-04-11 17:36:35 · 1332 阅读 · 0 评论 -
C++中四种进程或线程同步互斥的控制方法
现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的。由这4种方法组合优化就有了.Net和Java下灵活多变的,编程简便的线程进程控制手段。 这4种方法具体定义如下 在《操作系统教程》ISBN 7-5053-6193-7 一书中能够找到更加周详的解释 1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量:为协调转载 2016-06-29 17:05:59 · 1187 阅读 · 0 评论 -
VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
出现这个错误,应该首先查看“#include”语句是否包含,或者是否包含正确。符号无法解析意味着编译器知道有这个符号存在,也就是有声明,但在链接时,找不到实现代码,那么就去看看报错的这个函数有没有实现代码。如果它们的确已经有了,还是出现这个错误,就把它们重新编译一下。根据个人遇到这个错误时的记录,原因可以分为一下几种:原因一:只是在.h里面声明了某个方法,没有在cpp里面实现。具体讲,转载 2016-11-05 10:38:07 · 4652 阅读 · 0 评论 -
error LNK2005: 已经在*.obj中定义
为什么会出现这个错误??“error LNK2005: 已经在*.obj中定义” 编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误,弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用转载 2016-11-05 10:37:21 · 2345 阅读 · 0 评论 -
C语言如何从指定行读取文件
在这里我们一共有三个功能,写文件,读文件,从指定行中读取文件,代码比较简单不多加解释。#include #include #include #define MAX_LENTH_OF_LINE 1024FILE* fptr;int WriteToText(){ fptr = fopen("test.txt", "w"); if (fptr == NULL) { pr原创 2016-06-13 09:00:02 · 20508 阅读 · 0 评论 -
c++(重载、覆盖、隐藏)
成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);转载 2016-06-16 11:42:21 · 644 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而转载 2016-06-08 13:10:37 · 491 阅读 · 0 评论 -
C++和C语言函数相互调用
1 引言C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。转载 2016-04-21 20:40:40 · 1229 阅读 · 0 评论 -
error MSB8031: Building an MFC project for a non-Unicode character set is deprecated.
error MSB8031: Building an MFC project for a non-Unicode character set is deprecated.原创 2016-04-18 21:48:58 · 5211 阅读 · 0 评论 -
operator关键字(重载操作符)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类型转载 2016-04-16 21:58:48 · 6132 阅读 · 0 评论 -
C++ 智能指针详解
智能指针转载 2016-08-19 19:14:07 · 772 阅读 · 0 评论 -
Boost C++ Libraries 遍历文件目录
Boost C++ Libraries 遍历文件目录原创 2017-02-02 21:30:58 · 2008 阅读 · 0 评论 -
2017秋招C++面经
1 欢聚时代(YY) (1)list map vector 能不能用for it迭代器删除? (2)知道线程安全吗?(包括线程安全函数) (3)有哪些什么锁,或有几种类型的锁?原创 2017-10-13 22:24:38 · 905 阅读 · 0 评论 -
STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序转载 2017-09-02 15:16:56 · 2933 阅读 · 0 评论 -
C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。 (一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有:转载 2017-08-14 09:38:14 · 6844 阅读 · 0 评论 -
C++静态库与动态库
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来转载 2017-08-17 15:06:55 · 547 阅读 · 0 评论 -
c++ 链接mysql:error LNK2019: 无法解析的外部符号
编译没有问题,运行出错。原因如下,我使用的系统是win7x64,MySQL 64位的lib也是64位的接口。所以解决方法如下:.项目->属性->配置管理器活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64重新编译 成功原创 2016-04-11 20:40:39 · 1666 阅读 · 0 评论 -
C语言ODBC操作MySQL数据库
c语言ODBC API编程 数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性。SQL是标准化数据库编程接口的一种尝试,然而各种数据库所支持的SQL又有所不同。ODBC的设计目的是允许访问多种数据库,ODBC为数据库供应商提供了一致的ODBC驱动程序标准,遵循这个标准开发的数据库驱动程序,都原创 2016-05-16 13:53:47 · 9969 阅读 · 8 评论 -
【C++ STL 温故而知新 002】<algorithm>中各种算法解析和string类
一、中各种算法解析二、string类 reference:http://blog.csdn.net/tianshuai1111/article/details/7674327http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html转载 2017-02-22 17:36:10 · 1363 阅读 · 0 评论 -
C++ 标准模板库(STL)汇总
C++ 标准模板库(STL)汇总原创 2017-02-22 21:08:25 · 2907 阅读 · 0 评论 -
【C++ STL 温故而知新 002】Lists(链表)
【C++ STL 温故而知新 002】Lists(链表)原创 2017-02-23 20:36:41 · 512 阅读 · 0 评论 -
VS2013编译Poco X64
项目需要故使用VS2013进行Poco X64的编译工作,现做简单记录。编译环境:VS2013Poco源码下载:https://pocoproject.org/download/index.html使用Visual Studio编译Poco有两种方法。方法一:Poco 根目录下有build_vs120.cmd和buildwin.cmd这两个批处理文件, 我们得修改一下它们。原创 2017-06-19 18:04:04 · 1745 阅读 · 0 评论 -
【C++ STL 温故而知新 001】vector容器和iterator迭代器
一、vector容器二、iterator迭代器三、C++中用new和不用new创建对象区别原创 2017-02-20 10:59:13 · 1493 阅读 · 0 评论 -
C/C++专项训练考题汇总 001
C/C++专项训练考题汇总原创 2017-03-21 09:28:23 · 2845 阅读 · 0 评论 -
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
使用VS2013版本引用外部的lib进行编译时候提示:错误 25 error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(jrtplibSend.obj 中) F:\jrtplibProjects\jrtplibSend\jrtplibSend\jrtplib.lib(rtpudpv6transmitter.obj) jrtpl原创 2016-04-11 20:44:02 · 4324 阅读 · 0 评论 -
Standard_C_字符和字符串操作
1 简单案例#define _CRT_SECURE_NO_WARNINGS#include #include #include void main(){ char buf1[10]="123456789"; char buf2[10]="abcdefgh"; char* buf3; buf3 = NULL; buf3= (char*)memcpy(buf1, buf2,原创 2016-04-11 20:38:40 · 580 阅读 · 0 评论 -
Standard_C_内存操作
1 简单案例#define _CRT_SECURE_NO_WARNINGS#include #include #include typedef struct data_type { char name[20]; int age;} data;int test_malloc(){ data *bob; bob = (data*)malloc(sizeof(data)原创 2016-04-11 18:10:53 · 665 阅读 · 0 评论 -
c++标准模板库_顺序结构_Vectors详解
1 C++ VectorsVectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。1.1 Constructors 构造函数语法:vector();vector( size_type num, const TYPE &val原创 2016-04-11 17:42:37 · 672 阅读 · 0 评论 -
c++迭代器Iterator详解
1 C++ Iterators(迭代器)迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历。有这么几种迭代器如下:迭代器 描述input_iterator 提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。output_iterator 提供写功能的向前移动迭代器原创 2016-04-11 17:41:59 · 3248 阅读 · 0 评论 -
c++指针详解
1 指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子:例一:int *ptr;char *ptr;int **ptr;int(*ptr)[3];int *(*ptr)[4];转载 2016-04-11 17:41:22 · 455 阅读 · 0 评论 -
c++快速简易入门教程_006继承
1 继承c++提供了一种重要的机制,继承。派生类继承基类的成员变量和成员方法#include using namespace std;class animal{public: animal() { cout<< "animal construct" << endl; } ~animal(){ cout << "animal destruct" << endl;原创 2016-04-11 17:40:28 · 880 阅读 · 0 评论 -
结构体定义typedef struct详解
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使用时原创 2016-04-11 17:39:48 · 2882 阅读 · 0 评论 -
visual studio 2013错误:error MSB8020
visual studio 2013错误:error MSB8020将vs2012的项目用vs2013编辑器打开会出现如下错误提示:错误 1 error MSB8020: The build tools for Visual Studio 2012 (Platform Toolset = 'v110') cannot be found. To build using the原创 2016-04-11 17:39:03 · 8838 阅读 · 0 评论 -
c++快速简易入门教程_005this指针
1 this指针请先看代码:#include using namespace std;class student{public: char* name; int age; student(){ name = "FreeBamb"; age = 20; } //与默认无参构造函数重载 student(char* pName, int i_age){ na原创 2016-04-11 17:38:13 · 1074 阅读 · 0 评论 -
c++快速简易入门教程_004函数的重载
1 函数的重载 我们希望在构造student这个对象的同时,传递name和age的值,可以再定义一个构造函数,如下所示:#include using namespace std;class student{public: char* name; int age; student(){ name = "FreeBamb"; age = 20; } //与默认无原创 2016-04-11 17:37:38 · 1107 阅读 · 0 评论 -
c++快速简易入门教程_003析构函数
1 析构函数 当一个对象的生命周期结束时,我们应该去释放这个对象所占有的资源,这可以利用析构函数来完成。析构函数的定义格式:~类名,如~student()。 析构函数是“反向”的构造函数。析构函数不允许有返回值,更重要的是析构函数不允许带参数,并且一个 类中只能有一个析构函数。当一个类的对象超出它的作用范围,对象所在的内存空间被系统回收,后者在程序中用delete删除对象时,析构函数将自原创 2016-04-11 17:37:01 · 774 阅读 · 0 评论 -
c++快速简易入门教程_001从结构体到类
1 结构体 在C语言中我们可以定义结构体,将多个相关的变量包装在一块整体使用。这些变量可以是完全不同的数据类型。但是在C语言中结构体不能包含函数。 在面向对象的程序设计中,对象具有状态(属性)和行为,属性保存在成员变量中,行为通过成员函数来实现。这样在C语言中结构体只能描述一个对象 的状态,不能实现它的行为。因此C++对其进行了扩展,在C++结构体中可以包含函数。原创 2016-04-11 17:35:52 · 1584 阅读 · 0 评论 -
深入理解C++中函数参数——传值与传址详解
最近,阅读一本名为《C++现代大学教程》的书时,对函数中参数的传值和传址的使用,有了深入的的理解。特别是对以前使用指针作为函数参数传递时,“误”认为是一种传址的方式,其实绕了一圈,将指针作为函数参数时,也是一种传值的方式,只不过传的值是一个 “地址”。真正的传址方式其实就是C++中将引用作为参数进行传递的方式。下面,将对参数传递中使用的的:变量、指针(数组)、引用进行详细的说明。1 “变量”的转载 2016-04-11 17:34:54 · 1749 阅读 · 1 评论 -
两个字符窜,在母窜中查找子窜的位置
#include#includeint main(){ char str1[10]; char str2[10]; int index; printf("请输入母窜:\n"); scanf("%s",str1); printf("请输入子窜:\n"); scanf("%s",str2); for(int i=0;i<strle原创 2016-04-11 17:26:01 · 604 阅读 · 0 评论