CC++语言
文章平均质量分 53
Lion.Kuo
这个作者很懒,什么都没留下…
展开
-
C++ 内联函数(inline __forceinline)
Inline Functions (C++) | Microsoft Docs原创 2022-01-30 15:45:58 · 928 阅读 · 0 评论 -
控制台窗口输入getline与cin的区别
当需要在控制台模式下由外界输入时,我们常常这样写:string str;cin>>str;这种写法很简洁,但是有一个缺陷,当我们输入一个路径是,如果改路径中包含空格,那么空格以后的内容将输出不到str.这时getline函数是比较好的,如下:string str;getline(cin, str);原创 2016-06-23 16:10:22 · 767 阅读 · 0 评论 -
C/C++ 在 Java 项目、Android 和 Objective-C 三大平台下实现混合编程
Android和iOS开发都支持C++开发,可以一套代码多平台使用。同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率。一、为什么使用C/C++便于移植,用C/C++写得库可以方便在其他的平台上再次使用。代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大。提高程序的执行效率,将要求高性能的应用逻辑使转载 2016-08-06 14:37:01 · 2243 阅读 · 0 评论 -
编译器内置宏
编译器内置宏:先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期__TIME__:转载 2016-09-09 17:41:13 · 1025 阅读 · 0 评论 -
C++开源网络库
(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html注:除非特别需要,否则不建议; (2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://转载 2016-08-23 15:44:13 · 1810 阅读 · 0 评论 -
C语言文件操作详解
C语言文件操作详解C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有: 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去转载 2016-08-23 14:35:50 · 427 阅读 · 0 评论 -
struct 结构体“重定义;不同的基类型”
今天遇到这么一个问题,一个结构体编译报错,“重定义;不同的基类型”,这个结构体在一个头文件中定义,在两个cpp文件中包含该头文件,就报这个错误,结构体的定义形式为:typedefine struct strct{int x;int y;} stt;将结构体的定义形式改为如下方式,错误排除:struct stt{int x;int y;};分析:第一种定义方式为C语言定义,第二种为C原创 2016-09-21 18:43:17 · 16889 阅读 · 0 评论 -
定义结构体时变量名后的冒号和数字
如下: [cpp] view plain copy print?struct frame_control { u_char fc_subtype : 4; u_char fc_type : 2; u_char fc_protocol_version : 2; u_char fc_o转载 2017-03-23 17:38:59 · 1539 阅读 · 0 评论 -
多态类基类析构函数定义为虚函数原因
先看下面一段程序:#include using namespace std;class Person{public:virtual ~Person() //加了virtual,讲析构函数声明为虚函数{ cout }};class Student : public Person{public:转载 2017-06-05 13:45:42 · 514 阅读 · 0 评论 -
C++中##(两个井号)和#(一个井号)用法
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关 于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) \转载 2017-10-26 15:04:53 · 1929 阅读 · 0 评论 -
C/C++ 与 Python 的通信
作者:Jerry Jho链接:https://www.zhihu.com/question/23003213/answer/56121859来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。属于混合编程的问题。较全面的介绍一下,不仅限于题主提出的问题。以下讨论中,Python指它的标准实现,即CPython(虽然不是很严格)本文分转载 2017-11-30 17:14:40 · 682 阅读 · 0 评论 -
Warning C4828
参考:https://answers.unrealengine.com/questions/701635/warning-c4828.html原创 2018-01-25 09:38:09 · 2090 阅读 · 0 评论 -
Effective C++ 第四章(读书笔记)
18.让接口容易被正确使用,不易被误用 好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。 “促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。 ”阻止误用“的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户资源管理责任。 tr1::shared_ptr 支持定制型删除器。这可防范 ...原创 2018-11-26 22:10:05 · 177 阅读 · 0 评论 -
Effective C++ 第五章(读书笔记)
26.尽可能延后变量定义式的出现时间 这样做能增加程序的清晰度并改善程序效率。27.尽量少做转型动作 如果可以,尽量避免转型,特别是在注重效率的代码中避免 dynamic_casts。如果有个设计需要转型动作,试着发展无需转型的替代设计。 如果转型是必要的,试着将它隐藏于某个函数背后。客户随后可以调用该函数,而不需将转型放进他们自己的代码内。 ...原创 2018-12-04 20:49:03 · 201 阅读 · 0 评论 -
Effective C++ 第六章(读书笔记)
32.确定你的 public 继承塑模出 is-a 关系 “pulic继承”意味 is-a。适用于 base classes 身上的每一件事情一定也适用于dereved classes 身上,因为每一个 derevied class 对象也都是一个 base class 对象。33.避免遮掩继承而来的名称 derived classes 内的名称会遮掩 base c...原创 2018-12-04 21:33:28 · 276 阅读 · 0 评论 -
C++代码折叠功能
在C++中可以使用#pragma region #pragma endregion关键字来实现该功能。原创 2019-04-24 19:06:25 · 3772 阅读 · 0 评论 -
C++读写EXCEL文件方式比较
https://blog.csdn.net/fullsail/article/details/4067416转载 2019-07-03 10:31:37 · 3377 阅读 · 0 评论 -
xlslib--免费开源的C++读写Excel库
源码链接:https://sourceforge.net/projects/xlslib/?source=navbar原创 2019-07-10 09:26:06 · 6164 阅读 · 1 评论 -
C语言函数sscanf()的用法
在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数。 C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const c转载 2016-06-21 14:25:07 · 719 阅读 · 0 评论 -
【干货】国外程序员整理的 C++ 资源大全
摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard转载 2016-07-06 14:53:29 · 776 阅读 · 0 评论 -
给C++初学者的50个忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成转载 2016-03-17 09:42:02 · 2176 阅读 · 0 评论 -
C++经典面试题
1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。转载 2016-03-16 22:51:31 · 316 阅读 · 0 评论 -
C\C++面试题
1. C中static有什么作用 (1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。 (2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和转载 2016-03-16 22:48:31 · 5872 阅读 · 0 评论 -
常用C字符串操作函数
int strcmp(const char * string1,const char * string2); //比较字符串函数.宽字符版本:int wcscmp(const wchar_t *string1, const wchar_t *string2 );返回值:string1等于string2 0,string1大于string2 > 0,string原创 2016-02-22 17:05:26 · 402 阅读 · 0 评论 -
字符集之间转换
const char*utf8ToAnsi(constchar*src){ intnLen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)src, -1, NULL, 0); WCHAR * wszANSI = new WCHAR[nLen+1]; memset(wszANSI, 0, nLen*2+2);原创 2016-02-22 17:08:51 · 595 阅读 · 0 评论 -
常量指针与指针常量
指针常量:int * const p。只要const位于指针声明操作符右侧,就表明声明的对象是一个常量,且它的内容是一个指针,也就是一个地址,并且在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址。 常量指针:int const * p或者 const int* p。常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说原创 2016-02-22 17:09:55 · 410 阅读 · 0 评论 -
关于堆栈、内存分配
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。 要点: 堆:顺序随意 栈:先进后出 c/C++ 堆和栈的区别 對了解Java會有幫助的一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,转载 2016-03-17 19:38:12 · 417 阅读 · 0 评论 -
浅谈extern “C”
先来一个概括,如果要在C++中使用C函数,则需要用extern "C" 来声明。为什么呢?因为C++与C编译器有细微的差别,不用用这个符号,调用会出现错误。详情解析:作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:void foo( int x, int y );该原创 2016-03-18 10:50:52 · 358 阅读 · 0 评论 -
sizeof浅析(一)——求结构体大小
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。 C语言中的构造数据类型有三种:数组、结构体和共用体。 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素转载 2016-03-18 14:12:44 · 380 阅读 · 0 评论 -
TinyXml Print 函数 Bug
最近做一个项目,用到了TinyXml操作XML,有一个地方需要用print函数把XML文本打印出来,代码如下:m_pDbCfg->trees[m_pDbCfg->treeCount-1].cbuffer = (char*)malloc( MAX_BUFFERSIZE );int idx = 0;int isize = MAX_BUFFERSIZE;//由于无法预计最大长度,看了一下Prin原创 2016-03-22 13:33:15 · 936 阅读 · 0 评论 -
NULL、0与nullptr
C的NULL在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #define NULL ((void *)0) 也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int原创 2016-03-24 13:31:16 · 380 阅读 · 0 评论 -
将Unicode编码值转换为Unicode字符串
编码值格式为 \u004c\u004f\u0053\u0054\u002e\u0044\u0049\u0052wstring TranslateString(LPCWSTR szOrig){wstring wStr;LPCWSTR curChar = szOrig;while (*curChar){if (curChar[0] == '\\' &&(原创 2016-04-06 20:58:20 · 1691 阅读 · 0 评论 -
将unicode字符串转换为Unicode编码值
CString strToUnicode(char* src){CString strTmp = _T(""); DWORD dwNum;dwNum = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)src, -1, NULL, 0);wchar_t *pwText;pwText = new wchar_t[dwNum];dwNum原创 2016-04-06 21:00:43 · 696 阅读 · 0 评论 -
VC实现解压和压缩相关代码
其中#include "zip.h" 以及 #include "unzip.h" 为开源软件中代码,自己可以在网上下载. //*****************************************************************************ZipImplement.h************************************转载 2016-04-06 21:03:35 · 1093 阅读 · 0 评论 -
C++中struct、class 向前声明(前置声明)
声明:我把class定义的类型称为类,struct定义的类型称为结构体。C++中,如果要在一个类A的声明中用到另一个类B的指针或引用,需要包含类B的头文件,如果不想包含,可以使用向前声明。但是,如果是结构体(struct定义的),好像不支持向前声明,C++中类和结构体差别不大,只是默认权限不同(class默认为私有,struct默认为公有),所以如果想使用向前声明,请使用class定义类型原创 2016-03-28 14:26:20 · 20018 阅读 · 2 评论 -
struct和typedef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是转载 2016-03-28 13:21:02 · 314 阅读 · 0 评论 -
如何成为一个C++高级程序员
C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。 现在学习java、C#等语言的人数远远高于C++,主原创 2016-03-16 20:18:26 · 602 阅读 · 0 评论 -
指针函数与函数指针
一、辨别指针函数与函数指针最简单的方式就是看函数名前面的指针*号有没有被括号包含,如果被包含就是函数指针 ,反之则是指针函数。1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值转载 2016-03-17 10:54:29 · 290 阅读 · 0 评论