编程
周作才
这个作者很懒,什么都没留下…
展开
-
LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 问题的解决
LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 问题的解决vc中error LNK2001:unresolved external symbol 的解决方法 一,问题描述 error LNK2001: unresolved external symbol error LN转载 2012-11-14 19:41:03 · 1513 阅读 · 0 评论 -
#pragma分析
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一转载 2015-11-02 21:06:01 · 627 阅读 · 0 评论 -
C++ vector多维数组初始化及清零
vector常用方法assign() 对Vector中的元素赋值void assign( input_iterator start, input_iterator end ); //void assign( size_type num, const TYPE &val );reserve() 设置Vector最小的元素容纳数量 函数为当前vector预留至少共容转载 2015-11-24 20:40:24 · 51143 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2016-01-18 11:11:54 · 1027 阅读 · 0 评论 -
获取文件大小并读取文件内容(应用在protobuf文件解析上)
在实际应用中常常需要获取文件的大小,并根据得到的文件大小分配相应的内存给变量,然后把文件的所有内容放入到分配好的变量里面,不多说了,上代码自己看哈 FILE * pFile; int nsize; pFile = fopen ("file_temp","rb"); if (pFile==NULL) { cout <<"open error"<<endl; return -1原创 2016-01-19 10:56:27 · 1836 阅读 · 0 评论 -
protobuf 中的嵌套消息的使用 主要对set_allocated_和mutable_的使用
protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数调用了,下面看一个简单的例子。在网络游戏中,游戏玩家之间的同步是一个最基本的功能,而同步是通过对坐标的广播进行的,因此我们假设一个简单的模型,当一个玩家的位置发生变化时,将玩家的新位置发给地图转载 2015-11-30 20:27:04 · 12278 阅读 · 0 评论 -
批处理:如何逐行读取txt中每行的信息并显示
在实际的应用过程中,常常会在windows下批量的运行exe的一些可执行程序这时候可以采用一些批处理来完成如下所示:@echo off & setlocal EnableDelayedExpansionset j=0for /f "delims=""" %%i in (charlist_all_22.txt) do (set /lineStr j+=1set con!j!=%%ica原创 2016-01-06 20:45:23 · 14800 阅读 · 0 评论 -
ProtoBuf 常用序列化/反序列化API
1、C数组的序列化和反序列化API//C数组的序列化和序列化API bool ParseFromArray(const void* data, int size); bool SerializeToArray(void* data, int size) const; //使用 void set_people() { wp.set_nam转载 2016-01-27 17:24:29 · 2004 阅读 · 0 评论 -
如何更改linux文件的拥有者及用户组(chown和chgrp)
一、基本知识 在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文件的拥有者及用户组。在Linux中,对于文件的权限(rwx),分为三部分,一部分是该文件的拥有者所拥有的权限,一部分是该文件所在用户组的用户所拥有的权限,另一部分是其他用户所拥有的权限。对于文件的权限请参考《Linux的chmod命令》转载 2016-01-12 19:52:33 · 709 阅读 · 0 评论 -
安装protobuf
这里我们采用的版本是protobuf-2.6.1.tar.gz,也可以根据需要到网站https://github.com/google/protobuf下载最新的protobuf源码编译(1) 把protobuf-2.6.1.tar.gz拷贝到相应的目录下并解压:tar zxvf protobuf-2.6.1.tar.gz (2) 进入当前解压后的protobuf目录原创 2016-01-13 15:40:18 · 826 阅读 · 0 评论 -
converting to execution character set: Invalid or incomplete multibyte or wide character
在linux下编译源码的过程中往往会遇到这个错误:converting to execution character set: Invalid or incomplete multibyte or wide character这说明当前*.c或*.cpp文件里面有GBK编码格式,这时需要把当前的c或cpp转为linux所熟悉的utf-8格式,可以考虑采用如下两种方法来实现:原创 2016-01-13 21:21:51 · 8287 阅读 · 0 评论 -
C++ code 读取某给定路径下的当前文件夹名
#include #include #include void getJustCurrentDir( string path, vector& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if((hFile = _find转载 2016-03-01 19:25:54 · 914 阅读 · 0 评论 -
关于编程中遇到inf的情况
在进行编程的过程中我们常常会由于没有对分母是否为0进行判断,从而造成结果值为inf或-inf,对这个问题,从根本上杜绝的话就是在做除法的时候对分母进行是否为0的判断,若后续需要对一个数是否为inf或-inf作判断的话,我们可以采用如下方法来做一、利用C++中的numeric_limits来实现在C++的头文件#include 中,有各个类型的最值。如int 对应的最大最小值:std:原创 2016-02-29 19:36:36 · 15798 阅读 · 0 评论 -
opencv 函数pointPolygonTest 检测一个点是否在多边形内
opencv函数pointPolygonTest:C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)用于测试一个点是否在多边形中当measureDist设置为true时,若返回值为正,表示点在多边形内部,返回值为负,表示在多边形外部,返回值为0,表示在多边形上。当m原创 2015-09-12 11:44:28 · 21454 阅读 · 1 评论 -
windows下利用线程池完成多任务的分配和运行
在做项目的过程中有时候为了提升效率,用了多线程的方法来对任务进行分割和应用,后来发现,采用线程池的方法能更好的利用线程资源来计算任务,网上有很多关于如何运行线程池的例子,msdn上也给出了对应的例子:https://msdn.microsoft.com/en-us/library/windows/desktop/ms686980(v=vs.85).aspx感兴趣的话大家可以去看看,这里我给出一原创 2015-12-04 19:00:48 · 1497 阅读 · 0 评论 -
开源点评:Protocol Buffers介绍
内容来自:http://blog.csdn.net/program_think/article/details/4229773今天来介绍一下“Protocol Buffers”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。 ★proto转载 2015-11-16 21:14:21 · 743 阅读 · 0 评论 -
用unsigned char 赋值给Mat
用unsigned char 赋值给Mat例子:cv::Mat Image(64,64,CV_8UC1);for (int i=0;i{for (int j=0;j{Image.at(i,j) = (uchar)s[i][j];}}原创 2015-07-09 15:34:17 · 7014 阅读 · 0 评论 -
ubuntu中运行 sudo apt-get update 报错:W: GPG error: http://cn.archive.ubuntu.com vivid Release: The follo
采用如下解决方法就可以了:cd /var/lib/aptsudo mv lists lists.oldsudo mkdir -p lists/partialsudo apt-get update原创 2015-07-09 21:58:33 · 1471 阅读 · 0 评论 -
介绍几本专业的书籍,一起学习 关于技术 数学方面的
这里的书涉及到信息检索,自然语言处理,机器学习,模式识别,数据挖掘的方方面面,每一本书都是值得读者深入的阅读,研究和讨论的。因此,我只能就我个人的理解对几本相对熟悉的或者读者的评价很高的书做一些简单的介绍,一来抛砖引玉,希望大牛来多给些指正,二来也为他人的学习提供一些经验。这里是river同学的介绍,有什么问题可以直接与他沟通联系,他的信箱是hechuanbupt@gmail.com:转载 2015-07-01 19:39:40 · 2761 阅读 · 0 评论 -
opencv 中两个rect相交
在对opencv进行应用中,我们常会应用到rect之间的关系,可以采用如下方法来实现:bool rectA_intersect_rectB(cv::Rect rectA, cv::Rect rectB)如果rectA与rectB相交,则返回true,这里的相交没有包含的概念,如果要用到包含则可根据下面代码进行修改bool rectA_intersect_rectB(cv::Rect r原创 2015-07-27 16:04:54 · 8116 阅读 · 0 评论 -
对pair元素进行排序
最近在做一些程序,遇到对std::pair的排序问题,可以直接利用相应的框架来实现这里我们可以定义一个关于pair的排序函数bool pairSortFun( std::pair elem1, std::pair elem2 ){ return elem1.second > elem2.second;//or return elem1.first > elem2.second}原创 2015-07-28 10:09:14 · 4822 阅读 · 0 评论 -
error: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) Unable t
在ubuntu apt-get upgrade的时候,遇到:ubuntu@ubuntu:/usr/src/XXXXXXXXXXX$ sudo apt-get install YYYYYYYY[sudo] password for ubuntu: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource t原创 2015-07-16 21:11:05 · 684 阅读 · 0 评论 -
X32和X64平台下不同数据类型对应的字节数
在做关于一些文件读取的工作时,往往会遇到一些字符的大小读写处理的问题,这里我转载了某篇文章里面对字符所占字节的说明,觉得对自己在读写程序那块的帮助很大,和大家分享下一、程序运行平台 不同的平台上对不同数据类型分配的字节数是不同的。 个人对平台的理解是CPU+OS+Compiler,是因为: 1、64位机器也可以装32位系统(x64装XP);转载 2015-07-21 14:31:24 · 2000 阅读 · 0 评论 -
如何在windows下用C++创建目录
标准C++本身不能创建文件夹,但不同编译器本身对这个功能都做了扩展,VC使用 _mkdir("mydir")函数来创建(#include ),TC使用mkdir("mydir")来创建(#include )。如果只是创建文件夹,还可以利用system("md mydir")函数来解决;在后续的应用上可以利用std::string 变量名的形式创建多个文件夹转载 2015-07-21 11:41:28 · 4127 阅读 · 0 评论 -
在windows平台下UTF8和GB232之间的转换
在做关于字符识别和应用的过程中常常遇到UFT8和GB232之间的转换,至于什么是UTF8,什么是GB232这个我就不细细的说了,后续有时间在补上,在这里主要是贴上自己的转换代码,后续在使用的时候自己能清楚的知道,对其它的在使用这一块的朋友也有个帮助~!void UTF_8ToUnicode(wchar_t* pOut,char *pText){ char* uchar = (char转载 2015-09-07 20:54:51 · 1365 阅读 · 0 评论 -
fatal error C1004: unexpected end of file found
在编程中遇到一个错误:fatal error C1004: unexpected end of file found,后经过查找发现是因为在{ }符号缺少造成的。原创 2015-09-12 11:48:48 · 20989 阅读 · 1 评论 -
windows上安装protobuf
protobuf的全称是Protocol Buffer,它是google 的一种数据交换的格式,可用于用于分布式应用之间的数据通信或者异构环境下的数据交换, 最近因为项目的需求,需要接触Protobuf,在官方提供的压缩包中,提供了Linux下的编译脚本,但是,由于项目在windows下开发,因此,需要在Windows编译和安装Protobuf,结合自己的探索,希望能够帮助到初次接触转载 2015-11-16 21:08:31 · 16739 阅读 · 1 评论 -
关于Opencv图像的转换(YUV420sp)
这里先举一个例子,把Opencv中的图像数据存储到一个void *data数据中struct IMAGE_DATA void *data; //图像数据 int rows; //图像高 int cols; //图像宽 int channels; //图像通道数};bool OpencvMat2data(cv::Mat &o原创 2016-03-14 20:51:57 · 6161 阅读 · 1 评论