
C/C++/C#
huangxy10
这个作者很懒,什么都没留下…
展开
-
C++网络爬虫的实现——WinSock编程
写了一个网络爬虫,可以抓取网上的图片。需要给定初始网站即可。在vs2010中编译通过。编译后,运行即可,有惊喜哦!!!//#include #include #include #include #include #include "winsock2.h"#include #include #include #pragma comment(lib,原创 2012-10-28 04:05:59 · 80245 阅读 · 39 评论 -
.net 互操作之p/invoke- 数据封送(嵌套结构体,类,数组)(5)
.net 互操作之p/invoke- 数据封送(嵌套结构体,类,数组)(5)嵌套结构体 复杂的数据类型往往结构体中还有结构体,即嵌套结构体,也可以说是复杂类型.如下定义//typedef struct _PERSONNAME //{ // char* first; // char* last; // char* displayName; //转载 2013-05-08 22:21:33 · 1078 阅读 · 0 评论 -
C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
严格来说这篇文章算不上C++范围的,不过还是挂了点边,还是在自己的blog中记录一下吧。 C++中使用指针是家常便饭了,也非常的好用,这也是我之所以喜欢C++的原因之一。但是在C#中就强调托管的概念了,指针就不用想了。本来如果就在C#的世界里面写代码,也还算舒服,但是万事万物总有联系,这不,现在公司的另外一个用C#作的项目就碰到问题了,要调用之前用C++写的一个DLL中的一转载 2013-05-08 22:07:53 · 1045 阅读 · 0 评论 -
C#调用C++DLL注意事项
C#调用C++DLL注意事项:1>C#值类型与引用类型的内存特点2>平台调用中DllImport,StructLayout,MarshalAS的各属性及其含义3>C++中结构体的内存布局规则4>C#调用非托管代码时,各种参数的送封特点(主要是结构体,数组,字符串)5>使用Marshal类的静态方法实现托管内存与非托管内存之间的转换6>内存释放问题,即C#中如何释放非原创 2013-05-17 13:03:29 · 2575 阅读 · 0 评论 -
深入C#内存管理来分析值类型&引用类型,装箱&拆箱,堆栈几个概念组合之间的区别
深入C#内存管理来分析值类型&引用类型,装箱&拆箱,堆栈几个概念组合之间的区别C#初学者经常被问的几道辨析题,值类型与引用类型,装箱与拆箱,堆栈,这几个概念组合之间区别,看完此篇应该可以解惑。 俗话说,用思想编程的是文艺程序猿,用经验编程的是普通程序猿,用复制粘贴编程的是2B程序猿,开个玩笑^_^。 相信有过C#面试经历的人,对下面这句话一定不陌生: 值类型直接存储其值,引用转载 2013-05-08 15:12:31 · 796 阅读 · 0 评论 -
C#引用类型和值类型区别是什么?[
解析:CLR支持两种类型:值类型和引用类型。用Jeffrey Richter(《CLR via C#》作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题”。这就要求我们正确理解和使用值类型和引用类型。值类型包括C#的基本类型(用关键字int、char、float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型);而引用转载 2013-05-08 14:42:43 · 953 阅读 · 0 评论 -
用VS2010 C#写DLL文件并且调用
一.创建dll文件 1.在vs2010中创建Class Library 项目; 2.输入代码using System;namespace myFirstDll{ public class Show { public string Messages() { //定义了一个方法,此方法的作用就是返回转载 2013-05-06 17:21:42 · 981 阅读 · 0 评论 -
C++ 使用win32API遍历文件夹
#include 02#include 03#include 04#define LEN 1024 05// 深度优先递归遍历目录中所有的文件 06BOOL DirectoryList(L转载 2012-12-26 19:00:23 · 2546 阅读 · 0 评论 -
system函数
windows下system () 函数详解 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); system函数已经被收录在标准c库中,可以直接调用 程序例: #inclu转载 2012-12-01 22:43:07 · 2597 阅读 · 0 评论 -
vs2010怎么显示行数
工具->选项--->文本编辑器选择对应的文件类型,在右侧选中行号即可。转载 2012-11-15 14:11:34 · 9517 阅读 · 0 评论 -
unicode, ANSI, utf-8字符集之间的转换 C,C++
// 多字节编码转为UTF8编码 bool MBToUTF8(vector& pu8, const char* pmb, int mLen) { // convert an MBCS string to widechar int nLen = MultiByteToWideChar(CP_ACP, 0, pmb, mLen, NULL, 0); WCHAR* lpsz转载 2012-11-15 00:14:29 · 5078 阅读 · 0 评论 -
C# 操作mysql数据库
using System;using System.Configuration;using MySql.Data.MySqlClient;/// /// TestDatebase 的摘要说明/// public class TestDatebase{ public TestDatebase() { // // TO转载 2012-11-12 22:50:19 · 730 阅读 · 0 评论 -
封送带字符串指针的结构体参数到非托管函数
在NET项目开发过程中,经常会遇到向非托管代码封送结构体的情况,如果结构体中仅包含blittable类型/字符串/字符数组类型字段,仅需要在C#中重新声明该结构体并将该结构体作为参数传递到非托管函数即可。但若结构体中包含了指向字符串的指针,情况会稍微复杂些。非托管结构体代码如下:?12345678structPar转载 2013-05-08 23:02:56 · 1236 阅读 · 0 评论 -
C#调用C++dll的类型转换
0、前言从VB到C#,被人诟病比较多的就是交互性比较差,又集中表现在调用Win32 API上。如果说C/C++调用API只是调用函数这类轻松的活,在C#下却成了阻挡入门者的技术活。之所以产生这么大区别在于数据类型的差异,就是因为C#这类采用了“安全”的类型,我们避免了内存释放和内存访问错误的一些困扰,但是不得不面对调用API时的繁琐。有得必有失,关键看你选择了什么。在调用API时,对于值类转载 2013-05-08 14:11:49 · 1180 阅读 · 0 评论 -
封送处理字符串
http://technet.microsoft.com/zh-cn/windowsserver/e8w969hb(v=vs.96)平台调用复制字符串参数,并在必要时将其从 .NET Framework 格式 (Unicode) 转换为非托管格式 (ANSI)。由于托管字符串是不可变的,因此当函数返回时,平台调用不会将它们从非托管内存复制回托管内存。 下表列出了字符串的封送处理选项转载 2013-05-08 22:54:32 · 1183 阅读 · 0 评论 -
【链接库出错】:error LNK2005: "void __cdecl operator ***(void *)" (??3@YAXPAX@Z) 已经在xxxx.lib中定义
error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义可以使用来查看库的链接顺序,从而找出这类错误的原因。1>------ 已启动全部重新生成: 项目: OperationSystem, 配置: Deb原创 2013-11-23 11:51:21 · 3696 阅读 · 0 评论 -
使用_CrtSetDbgFlag检测内存泄露
介绍:动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起转载 2013-11-23 15:50:33 · 1070 阅读 · 0 评论 -
TCP 完成端口服务器构建
在vs2008中编译通过,vs2010应该也没有问题。使用静态MFC dll。其他配置保持默认即可。可能需要设置/MTD运行时。可以实现向指定客户端ip发送信息(该客户端必须首先连接进服务器)从指定客户端ip中取出数据。我使用C++类进行了封装,对各种异常进行了处理。进行了较详细的注释,如果有函数不清楚,可以去msdn上查一查。原创 2013-11-23 14:06:52 · 3561 阅读 · 1 评论 -
C#调用C++DLL中的回调函数(异步的情况,DLL中会在事件触发时调用函数)
我们在使用c#托管代码时,内存地址和GC回收那不是我们关心的,CLR已经给我们暗箱操作。但是如果我们在c#中调用了一个非托管代码,比如vc的DLL,而且他有个回调函数,需要引用c#中的某个对象并操作,这时候你就得要小心了。要是非托管代码中用到得托管代码那个对象被GC给回收了,这时候就会报内存错误。所以我们就要把那个对象“钉”住(pin),让它的内存地址固定,而不被垃圾回收掉,然后最转载 2013-05-15 02:13:42 · 4135 阅读 · 0 评论 -
COM组件开发过程中的TLB文件说明与使用
tlb文件:com类型库文件。在需要使用对应com类的模块里,“#import ...*.tlb”使用之。tlh、tli文件:他们是vc++编译器解析tlb文件生成的标准c++文件。因为odl和tlb并不是C++标准的东东,有必要把它们翻译成标准的 C++类型,使得C++开发者可以使用。相信vb和j++也会把tlb翻译成自己语言兼容的类型描述信息。tlh相当于类型申明(头文件)转载 2013-05-14 15:25:45 · 6374 阅读 · 0 评论 -
C/C++中函数的调用约定(__cdecl, __stdcall)以及extern, extern “C"的详细解释
1, C/C++中函数的调用约定 主要规定了调用函数时参数的入栈顺序以及调用结束后由谁(调用者还是被调用者)负责将参数出栈。 主要有以下两种调用约定: __cdecl 是C Declaration的缩写(declaration,声明),是C/C++语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要原创 2013-05-10 14:25:51 · 1380 阅读 · 0 评论 -
C# typeof()实例详解
用于获取类型的 System.Type 对象。typeof 表达式采用以下形式:System.Type type = typeof(int); 备注若要获取表达式的运行时类型,可以使用 .NET Framework 方法 GetType,如下所示:int i = 0;System.Type type = i.GetType();t转载 2013-05-08 14:04:20 · 965 阅读 · 0 评论 -
利用C# Marshal类实现托管和非托管的相互转换
Marshal 类命名空间:System.Runtime.InteropServices提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。 Marshal 类中定义的 static 方法对于处理非托管代码至关重要。此类中定义的大多数方法通常由需要在托管和非托管编程模型之间提供桥梁的开发人员使用。例转载 2013-05-08 13:43:31 · 3425 阅读 · 0 评论 -
.net 互操作之p/invoke- 数据封送(字符串版本-ANSI和UniCode,返回错误码,回调函数,常量)(6)
.net 互操作之p/invoke- 数据封送(字符串版本-ANSI和UniCode,返回错误码,回调函数,常量)(6)处理字符串的函数(ANSI和UniCode版本)非托管函数后缀名A表示ANSI,W表示宽字符(Unicode),如GetUserName有GetUserNameA和GetUserNameW p/inlvoke设置方式 1.设置CharS转载 2013-05-08 22:22:28 · 881 阅读 · 0 评论 -
STL中的排序
0 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论 都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会 发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟转载 2013-05-22 15:00:33 · 847 阅读 · 0 评论 -
c与c#数据类型对应关系
C++ 与 C#数据结构类型对应关系表网上文章1API与C#数据结构类型对应关系表API与C#的数据类型对应关系表 API数据类型类型描述C#类型API数据类型类型描述C#类型WORD16位无符号整数ushortCHAR字符charLONG32位无符号整数intD转载 2013-05-08 19:15:02 · 1900 阅读 · 0 评论 -
用C#写的winform调用webservice天气预报小软件教程
用C#写的winform调用webservice天气预报小软件教程 我们来研究c#在winform上调用webservice实现一个的实例,开始之前先罗嗦几句,对于webservice我之前从来没有接触过,今天突然想为自己的手机做个天气预报小软件,所以才开始看资料,上网查别人做的教程,很多都是一带而过,大体的说该怎么做,具体的却很少,所以象我这样的菜鸟基本是一头雾水,没办法只有不断的试,经转载 2012-11-12 22:20:32 · 1753 阅读 · 0 评论 -
Android 网络编程应用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://52android.blog.51cto.com/2554429/496621 Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。以下是本人在学习中的总结与归纳。1. HttpURLConnection转载 2012-11-13 03:18:51 · 547 阅读 · 0 评论 -
sscanf与正则表达式
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htmhttp://msdn.microsoft.com/en-us/library/28hw3sce.aspxhttp://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex转载 2012-10-27 10:32:39 · 7521 阅读 · 1 评论 -
用两个整数来模拟浮点数运算
一个做底数,一个做指数,实现加减乘除运算。注意精度,已经数为0的情况。#include #include #include using namespace std;/* int 型是4个字节 取值访问为 -2147483648 ~ 2147483647 对于10进制数来说,有9位的精度*/double pow10(int exp) //10原创 2012-09-30 18:39:07 · 5236 阅读 · 3 评论 -
priority_queue & 结构体||类 & 自定义比较函数cmp
http://blog.youkuaiyun.com/hongxdong/article/details/5559046大部分内容来自某STL语法详解文档,贴出来应该没问题吧~~1.先给一个简单应用的例子,这个和容器的用法差不多。#include #include using namespace std; int main(){ priority_queue q;转载 2012-09-28 20:57:14 · 22800 阅读 · 3 评论 -
STL之优先队列
STL之优先队列原本以为priority_queue很简单,才知道原来懂的只是最简单的形式。头文件:#include优先队列,也就是原来我们学过的堆,按照自己定义的优先级出队时。默认情况下底层是以Vector实现的heap。既然是队列,也就只有入队、出队、判空、大小的操作,并不具备查找功能。函数列表:empty() 如果优先队列为空,则返回真 p转载 2012-09-28 18:49:43 · 1150 阅读 · 0 评论 -
实例讲解C语言atan和atan2函数
http://anony3721.blog.163.com/blog/static/51197420114962425307/使用时需要预包含#include (1)atan(x) 不包括角度的象限信息,返回值在[-pi/2,pi/2]The atan function computes the principal value of the arc tangent of转载 2012-09-02 10:01:33 · 12302 阅读 · 0 评论 -
C++网络编程 如何使用SOCKET 发送HTTP1.1 GET POST请求包
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分转载 2012-06-14 11:07:27 · 13998 阅读 · 2 评论 -
C++ ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout 2、析取器(>>)转载 2012-05-22 16:35:10 · 937 阅读 · 0 评论 -
读取文件中所有的字符
最简洁的做法是用ios::rdbuf():#include #include #include using namespace std;bool getFileStr(string filename, string str){ifstream src(filename.c_str());if(src.is_open()){str = src.rdbuf().str();s原创 2012-05-21 12:53:35 · 1200 阅读 · 0 评论 -
vs2010下release版本调试设置
设置在Release模式下调试的方法:1.工程项目上右键 -> 属性2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi)3.c++ -> 优化 -〉优化 选 禁止(/Od)4.连接器 -〉调试 -〉生成调试信息 选 是 (/DEBUG)转载 2012-05-30 15:52:10 · 62257 阅读 · 5 评论 -
进程与线程、应用程序域关系
进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操 作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。 那进程与线程的区别到底是什么?进程是执行程序的实例。例如,当你运行记事本程序(Nodepad)时,你就创建了转载 2011-12-22 23:31:30 · 2660 阅读 · 1 评论 -
stl string常用函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字转载 2011-12-21 16:29:46 · 596 阅读 · 0 评论 -
VS2010中添加第三方库的路径
随便建一个项目,然后打开视图 - 属性管理器,里面有Debug和Release的默认配置,进入Microsoft.Cpp.Win32.user - VC++目录里修改就可以了,修改这里会应用到所有的项目,包括以后新建的。http://topic.youkuaiyun.com/u/20111217/15/8d516ad5-583d-4faa-abb8-18848acebae9.html转载 2011-12-18 15:06:53 · 5123 阅读 · 0 评论