
C/C++语法相关
文章平均质量分 59
mishidemudong
菜鸟上路,一颗红心,两手准备。
展开
-
Vector用法详解
vector –一. vector可以模拟动态数组 –二. vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public 拷贝构造函数和重载的赋值操作符) 三.必须包含的头文件#include – 四. vector支持随机存取转载 2016-07-20 14:24:25 · 576 阅读 · 0 评论 -
c_str()的介绍与用法
c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: char* c; string s="1234"; c =原创 2016-07-19 18:40:29 · 1436 阅读 · 0 评论 -
读取文本文件中文每一行并存储到txt
关键代码,1 读取TXT文本文件的每一行; 2 读取中文字符串 3 存储中文字符串到文本文件,这次居然可以用%s实现,注意代码,不知道下次能不能行。与wchar的区别。#include "stdafx.h"#include#include #include#include#include #include#include #include#includ原创 2016-07-19 18:25:05 · 1637 阅读 · 0 评论 -
fopen函数使用
头文件:#include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode);【参数】path为包含了路径的文件名,mode为文件打开方式。mode有以下几种方式:打开方式 说明r 以只读方式打开文件,该文件必须存在。转载 2016-07-19 17:09:37 · 2285 阅读 · 0 评论 -
利用rect函数截取原图的图像OPENCV
利用OpenCV从图像中截取一块,并作为图像输出的函数,是很简单的,也在多幅图像中循环使用过,没出过错。void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect){//从图像orgImage中提取一块(rectInImage)子图像imgRect IplImage *result=im原创 2016-07-14 10:19:39 · 6824 阅读 · 0 评论 -
C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
一:首先什么是IntPtr先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It's a class that wraps a pointer that is used when calling Windows API functions. The unde转载 2016-06-27 10:49:32 · 6430 阅读 · 0 评论 -
在c#中使用指针
如果想在c#中使用指针,首先对项目进行配置:在解决方案资源管理器中右击项目名选择属性(或在项目菜单中选择consoleApplication属性(consoleApplication为项名)),在生成选项卡中 选中“允许不安全代码”,如下图: 然后将有关指针,地址的操作放在unsafe语句块中。使用unsafe关键字是来告诉编译器下面的代码是不安全的。unsafe转载 2016-06-21 10:02:52 · 6529 阅读 · 0 评论 -
C#调用C/C++动态库 封送结构体,结构体数组
因为公司一直都是做C++开发的,因客户需要要提供C#版本接口,研究了一下C#,发现其强大简洁, 在跨语言调用方面封装的很彻底,提供了强大的API与之交互.这点比JNA方便多了. Java与C#都只能调用C格式导出动态库,因为C数据类型比较单一,容易映射. 两者都是在本地端提供一套与之映射的C#/java描述接口,通过底层处理这种映射关系达到调用的目的. 一. 结构体的传递 Cpp代码 收藏代码#d转载 2016-06-20 18:17:56 · 1225 阅读 · 0 评论 -
C++与C#数据类型对应关系总结
API与C#的数据类型对应关系表API数据类型类型描述C#类型API数据类型类型描述C#类型WORD16位无符号整数ushortCHAR字符charLONG32位无符号整数intDWORDLONG64位长整数long原创 2016-06-20 14:27:40 · 15842 阅读 · 0 评论 -
C#如何定义结构体及访问结构体的成员
构结构的关键字 struct,struct类型是一种值类型通常用来封装小型变量组,如果冲结构创建一个对象并将对象赋给某个变量 则变量包含结构该变量放入结构的全部值,如果复制包含变量的结构,则将该复制所有的值,对新副本所作的任何修改都不会改变就副本的值(值类型的复制,自复制给其他的值,改变原来结构的值)结构的特点:结构不是引用类型,而是值类型。结构的实例化不能用new运算符。结构可以声明构造函数原创 2016-06-15 15:15:29 · 17110 阅读 · 0 评论 -
C# 中静态调用C++dll 和C# 中动态调用C++dll
C# 中静态调用C++dll 和C# 中动态调用C++dll在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译。这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下:一. C# 中静转载 2016-06-14 16:44:29 · 3198 阅读 · 1 评论 -
C++编程规范及标准
文件名:每个源代码文件应该有一个包含文件。每个包含文件描述了单个类或者多个类相结合的集合。一般头文件(.h,或.hpp)包含类的定义而不是实例。因此包含文件可以用在多个文件当中,源文件(.c,.或cpp)定义了编译时加载进内存的代码,它的实例化定义包含在头文件中,例如,一个类的定义应该包含在.hpp的包含文件中,一个全局变量应该在.cpp文件中实例化而不是.hpp文件中。用exte转载 2016-06-12 10:49:33 · 801 阅读 · 0 评论 -
map容器的使用以及打印Unicode宽字符到文本
static map,int> mapwordsTwogram; //定义全局二元组或三元组统计字符频率变量mapwordsTwogram;FILE* fp = fopen( "XXX.txt", "w" ); int CountWords3gram(vector> count3gram ){ cout<<"开始统计三元组中的字符频率"<<endl; unsigned int原创 2016-06-08 17:27:24 · 776 阅读 · 0 评论 -
有趣的Unicode、UTF-8编码起源
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把转载 2016-05-18 17:22:00 · 704 阅读 · 0 评论 -
如何判断一个Unicode表示的字符为一个中文字
中文字在unicode里用2字节表示的时候,编码(例如,UTF-16BE)是从4e00-9FBB如果用char表示,第一个中文字是char c = 19968 (4e00)最后一个中文字,char c = 40891 (9FBB)如果你是有char数组,直接比较就行了。小于19968大于40891都不是中文 *字*。中文的标点符号,在另外的编码段,具体可以去查www.unicode.org原创 2016-05-18 14:57:58 · 6102 阅读 · 0 评论 -
C++中substr函数的用法
C++中substr函数的用法#include#includeusing namespace std;main(){string s("12345asdf");string a=s.substr(0,5); //获得字符串s中 从第0位开始的长度为5的字符串//默认时的长度为从开始位置到尾cout}输出结果为:12345原创 2016-05-13 18:15:16 · 1983 阅读 · 0 评论 -
string 转成char *的方法
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1。data 如: string str="abc"; char *p=str.data(); 2.c_str 如:string str="gdfd"; char *p=str.c_str(); 3 copy 比如 string str=原创 2016-05-13 17:51:02 · 1984 阅读 · 1 评论 -
对map的value进行排序的方法
对map的value进行排序的方法,注意思路,以及CMPBYVALUE的用法map按键排序和按值排序前几天做了一个关于字符串的题,题目要求寻找一个字符串中出现最多的子串是哪一个,没想到什么很有技巧的想法,于是就打算遍历所有的子串,利用一个map实现,其键值为对应的子串,value为子串出现的个数,遍历玩所有的子串后,只要寻找最大的value的键值就可以了,这里就想到一个问题,map一般是按键排原创 2016-05-13 16:12:08 · 5064 阅读 · 0 评论 -
类的声明、定义、初始化
一、类的声明1.不完全类只声明而尚未定义的类称为不完全类不完全类只能用于定义指针、引用、参数类型、返回值类型,不能定义对象[cpp] view plain copyclass Mat; //求定义的类 Mat Test(Mat& B);//正确 Mat *pMat;//正确 Mat mt;//错误,如果在任何转载 2016-05-10 16:24:43 · 3108 阅读 · 0 评论 -
友元函数的总结
1.关键字friend只出现在类定义的内部(这点与const不同)2.友元是授予友元关系的那个类的成员3.定义类B为类A的友元,B可以访问A的私有成员[cpp] view plain copy例1:/*要注意友元的使用顺序,声明B->定义A->定义B*/ class B;/*只声明而未定义的类称为不完全类,可用定义类型,不能转载 2016-05-10 16:22:54 · 565 阅读 · 0 评论 -
static总结
一、不在类中的static的使用1.作用1.局部变量被申明为static,表示这个函数结束的时候这个的值不变。2.外部变量被申明为static表明它是一个本地全局变量。改变量只能在该文件内被访问,不能被其它文件访问。2.Static与非static的区别static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引转载 2016-05-10 16:22:03 · 659 阅读 · 0 评论 -
const的作用
一、const的作用1.将限定符声明为只读方法:(1)在类型前加关键字const(2)必须初始化举例:[cpp] view plain copy const int i = 5;//正确 int j = 0; const int k;//编译错误 i = j;//编译错误 j = i;//正确转载 2016-05-10 16:21:21 · 696 阅读 · 0 评论 -
fopen和fprintf函数的使用
#include#includeusing namespace std;#define F_PATH "E:\\梁栋凯\\example\\fopen\\fopen\\liang.txt"int main(void){ FILE *fp=NULL; //创建文件指针 fp=fopen(F_PATH,"w+"); if(NULL=原创 2016-05-10 15:50:11 · 10307 阅读 · 0 评论 -
VS注释快捷键
最近在使用VS2010开发ASP.Net,突然发现想全部注释时找不到注释的快捷键,网上查了下,原来很简单,只是需要使用组合键。注释: 先CTRL+K,然后CTRL+C取消注释: 先CTRL+K,然后CTRL+U原创 2016-05-09 11:10:49 · 611 阅读 · 0 评论 -
VS 2013设置大地址解决地址写入冲突问题 0xC0000005: 写入位置 0x00000014 时发生访问冲突
今天用vc 2008调用matlab相机标定工具箱stereo rectify的DLL,程序运行到一半就挂。试了N次都是这样。没办法,写了一个matlab测试程序,测试没问题。后面想到有没有可能是内存不够,原来在32位机上碰到过这个问题,校正小图可以,换大图(500W像素)就内存不够了。但现在用的是64位机啊,4GB内存,怎么会不够用呢。后面再想,32位机只原创 2016-05-07 13:02:12 · 7911 阅读 · 0 评论 -
用STL 中的vector创建二维数组
用 STL vector 来创建二维数组以前我要建立一个二维数组,总是使用 int N=5, M=6; vector > Matrix(N); for(int i =0; i Matrix[i].resize(M); } 上面多写了三行,就是为了指定 Matrix 的烈数。 今天才发现,可以用更简单的方法完成上面的工作 下面的一行就可以代原创 2016-05-05 18:14:11 · 6996 阅读 · 0 评论 -
strcmp函数
C/C++函数,比较两个字符串设这两个字符串为str1,str2,若str1==str2,则返回零;若str1>str2,则返回正数;若str1原创 2016-05-05 14:31:14 · 384 阅读 · 0 评论 -
printf函数格式化输出使用总结
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: pr原创 2015-08-07 09:05:44 · 1232 阅读 · 0 评论 -
模板与泛型编程之实现(归并排序)
昨夜突然遇到一道编程,需要查看一趟归并之后,字符串数组的排序情况。因为平时用的程序是基于整型数组,所以就在原有基础上改变了数组参数。此时突然想到,为何不用模板编程的思想改成通用模板函数,这样不管输入的数组是什么类型,都可以进行类似的计算。好,下面就来实践下如何实现泛型函数首先是定义一个泛型函数:template int compare(const T &v1,const T &v2)原创 2015-08-04 10:01:39 · 556 阅读 · 0 评论 -
面向对象编程的几个关键概念继承、多态、组合
一、继承、接口与多态的相关问题:1、 继承的作用?好处?坏处?继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。优点:a因为大原创 2015-06-17 22:21:28 · 2069 阅读 · 0 评论 -
杨氏矩阵的查找算法
今天碰到了这一问题,考虑的是根据杨氏矩阵的性质,从左到右,从上到下都是递增排序的。因此想要找到杨氏矩阵当中是否存在某数,可以从右上角的数开始找起,即从Y_Matrix[0][columns-1]开始找起。此时如果Y_Matrix[0][columns-1]比要找的数大,则继续往左查找,即columns-2;若此时比要找的数小,那么就要往下开始找起,即比较Y_Matrix[1][column原创 2015-06-12 23:25:29 · 765 阅读 · 0 评论 -
寻找和为定值的两个数
首先感谢July的编程艺术课程,总结得很好,现在转载在此。寻找和为定值的两个数题目描述输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析与解法咱们转载 2015-06-08 22:19:19 · 635 阅读 · 0 评论 -
不通过临时变量实现交换的函数
首先是定义成内联函数,提高函数调用效率。以空间换取时间。另外,关键点在函数体内,如何实现参数x和y的相互交换?不用另外定义一个临时变量,通过他们练歌的相互计算实现交换是很好的。即: x=x+y;y=x-y;x=x-y;好了函数如下inline void swap(int& x, int& y){ x = x + y; y = x - y;原创 2015-06-08 16:59:06 · 558 阅读 · 0 评论 -
C++继承与派生的访问基本规则
一 ,类的继承:继承分为单继承和多继承继承的思想要点:继承中要点就是派生类和基类的初始化,都是调用基类的构造函数来实现的,接下来就是函数的实现及类的作用域问题值得注意。 首先注意构造函数和析构函数都不能继承:因此要用通过调用基类的构造函数来初始化基类的数据成员。 派生类构造函数调用原则是:先基类,后子对象,再派生类。 派生类析构函数调用原则是:先派生类原创 2015-06-02 20:22:17 · 709 阅读 · 1 评论