自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白永辉的专栏

资料收集类的 都是比较经典的东西

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 iconv() errno:EILSEQ(InBuf多字节序无效)

环境:Linux,C++问题:在发送消息时,需要将utf-8编码转换为utf-16编码,因此需要用到iconv()函数族在用iconv()函数进行转换时,出现了错误,提取errno得到EILSEQ错误,即待转换的char*所指向的内容多字节序无效(个人理解为有乱码)探查原因:调试程序,发现原来是自己结构体没有填充完善造成的。(粗心害死人)原因:在转换前,内存空间是进

2011-12-21 10:40:55 5801 1

原创 从数据库中读取文本类型(char(16))字段时的bug(不算是err)

环境:数据库(普遍适用),C#出错原因:从数据库里读取用户名,如name="xuwei       "代码:读取的代码如下所示:while (usrDataReader.Read()) { nRow++; string usrName = usrDataRea

2011-12-20 21:17:35 1073

原创 从数据库中读取字符时的注意事项

环境:数据库(普遍适用),C#出错原因:从数据库里读取用户名,如name="xuwei       "

2011-12-20 21:13:47 98

原创 C# 为TreeView中的子节点添加单击事件

文章名字为单击事件,实际上双击等事件的操作类似说明:(1) TreeView中的Nodes[] 本身是没有单击、双击事件的,但是TreeView本身这些事件都有;(2) TreeView中有一个属性:SelectedNode,该属性可以获取或设置当前选中的节点;因此,结合点(1)和(2),就可以做出一个类似于TreeView中的子节点单击事件实例代码:(1) 为TreeVi

2011-12-20 13:28:45 16542 4

原创 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。

环境:C#   VS2010  .NET 4.0错误原因:在多线程中,窗体控件的元素不是线程安全的。除了UI线程,其他线程不可以对控件进行操作;解决办法:(1) 可以通过异步委托调用来调用控件的方法来实现注意:一般的委托是以同步方式来实现的BeginInvoke();返回类型:IAsyncResultEndInvoke();传入IAsyncResult,返回

2011-12-20 10:50:44 3245

转载 通过多线程为基于 .NET 的应用程序实现响应迅速的用户

转自:http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx?mfr=true本文假设您熟悉 .NET、C# 和 Windows 窗体下载本文的代码: Multithreading.exe (106KB)摘要如果应用程序在

2011-12-20 10:13:30 1004

原创 C#端和C++端套接字通信中的几个问题

(1) 从字符串转为固定大小的字符数组如:定义固定大小的结构体:(使用命名空间:using System.Runtime.InteropServices;) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct OnlineUsrInfo { [Marsh

2011-12-19 22:59:47 1242 1

原创 C# 窗体的几个主要事件

(1) Load()事件在对象实例化,窗体可见之前发生。此时窗体处于实例化过程中,但还不可见(2) Activated()事件在窗体处于可见状态并处于当前状态时发生。刚开始不太明白,后来发现,每当窗体有变化时,该事件就会被触发。(3) Shown()事件在窗体显示之后发生,即加载完所有控件,并显示对话框后,触发该事件(4) Closing()事件在窗体关闭时发生

2011-12-19 14:23:33 2337

原创 Cannot insert breakpoint 0.

环境:Linux   GCC问题:134    int nRet=close(m_threadPool[pos]->sock);(gdb) Warning:Cannot insert breakpoint 0.Error accessing memory address 0xaa8ce1d1: 输入/输出错误.394        int nRecv=recv(

2011-12-16 09:15:18 6646

原创 用指针做传出参数的错误分析

环境:Linux   C++问题:memcpy(data, transBuf+nMsgHeadSize, dataLen);调试,查看内存如下:(gdb) print data$19 = 0xb67e237c ""(gdb) print transBuf+nMsgHeadSize$20 = 0x8070460 "xuwei"代码如下:传一个指针参数进去,

2011-12-15 16:22:29 1242

原创 Linux int型转换为char*型

在Linux中没有itoa()函数,只有atoi()   这点很有趣,居然不对称所以在Linux中实现从整型到char*的转换,一般使用如下两种方法:(1)用sprintf()函数来实现sprintf(char * cValue, "%d",  int nValue);这种方法简单易行,比较喜欢(2)自己定义函数进行转换网上有很多自己的实现,用于跨平台的整型,字符型转换

2011-12-15 12:33:34 9819

转载 Linux下编码转换(iconv函数族)

转自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换) 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h使用前需包含之:#include iconv函数族有三个函数,原型如下:(1

2011-12-14 21:55:57 15927 1

原创 Unicode编码方案简介及编码实现

部分摘自:维基百科(http://zh.wikipedia.org/wiki/Unicode)百度知道(http://baike.baidu.com/view/40801.htm)为了使内容简练,所以删去了很多东西。如果查看详细内容,请查看上面的链接。大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。编码方式Unicode是国际组织制定的可以容纳世界上

2011-12-14 21:08:28 3342

转载 Unicode与Ansi的区别

转自:http://www.cppblog.com/lapcca/archive/2010/05/06/114649.htmlUnicode与Ansi是两种不同的编码方式标准,Ansi中的字符采用8bit,而Unicode中的字符采用16bit。(对于字符,Ansi以单字节存放英文字符,以双字节存放中文等字符;而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种

2011-12-14 13:51:14 3340

原创 Linux下char类型可能带来的问题

问题起因:linux下C++采用utf-8编码方式,因此char类型不是单纯的一个字符一个字节。一个英文字符占一个字节,而一个中文字符则不只占了一个字节(具体查看Unicode编码方案简介及实现一文)。如下所示,分别输出中文的“王子”和其中文拼音的“wangzi”代码: char name[16]={0}; strcpy(name, "WangZi");

2011-12-14 13:18:55 4162

原创 wchar_t类型的几个函数

wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。在Windows下,wchar_t占2个字节(byte);在Linux下,wchar_t占4个字节wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个

2011-12-14 08:06:52 8004 1

原创 c#中Marshal.Copy()方法的使用

c#中Marshal.Copy方法的使用Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制函数有很多重载,如下所示:Copy(array[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针。Copy(array[]()[], Int32, IntPtr, Int3

2011-12-13 10:59:35 35962

原创 C#端和C++端套接字通信中遇到的编码问题

环境:Windows, VS2010注意事项:Windows下的wchar_t与Linux下的wchar_t不同(在Windows下占2字节;而在Linux下则占4字节)正题:由于C#端和C++端的编码方式不同,因此在通过套接字编程时,会有一些问题C#使用Unicode码,一个char占两个byte;而C++使用ANSI码,一个char占用一个byte所以,为了统一两者之间的不

2011-12-13 09:24:54 2072

转载 C#编程规范

转自:http://www.cnblogs.com/moss_tan_jun/archive/2010/10/10/1847380.html陈年的文档,不过很不错整理出来发到博客上,还有更多的朋友需要。目 录 1. 简介 32. 适用范围 33. 文体 34. 代码组织与风格 34.1. Tab 34.2. 缩进 44.3. 空行 44.4. 函数长度

2011-12-13 09:08:51 484

原创 C#中的编码实验

在C#中,默认使用Unicode码,因此一个char占2个byte实验1:通过ASCIIEncoding类进行转换char和byte string name = "xuwei"; byte[] bName = ASCIIEncoding.ASCII.GetBytes(name.ToCharArray()); int

2011-12-13 08:58:46 690

原创 mbstowcs()/wcstombs()

参考:http://blog.sina.com.cn/s/blog_55c1b83b0100wbah.html本文介绍两个由C语言提供的宽字符(wchar_t类型)和多字节字符( 一个字符用一个或者多个字节表示) 转换函数,因此具有通用性(在Windows/Linux系统中都可以使用):所需头文件:stdlib.h#include ( 1 ) mbstowcs()功能:把多

2011-12-12 14:52:38 21703 5

转载 用C++读写unicode文本

转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。

2011-12-11 10:48:37 48

转载 C++ 读取unicode文本

转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。

2011-12-11 10:47:13 101

转载 用C++读写unicode文本

转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。

2011-12-11 10:46:44 7537

原创 c#获取系统时间的方法

话说,在C#中获取时间还真是简单呀...使用DateTime结构(struct)类型就可以直接搞定所在命名空间:using system;使用DateTime结构的静态属性Now可以获得本地时间,而不用像C++中获取国际时间,再转换成本地时间那么麻烦;静态属性Today可以获取当前日期;注意事项:DateTime是一个Struct,而不是一个类,没有构造函数。而是类似于静态

2011-12-09 16:10:16 813

原创 undefined reference to `std::cin'

背景:在Linux下直接man cin/cout 是没有结果的,刚开始以为无法在Linux下使用cin/cout,后来看到网上确实有一些类似的代码,所以做了一个简单的实验,代码如下:#include using namespace std;int main(){ char name[16]={0}; printf("请输入姓名\n"); cin>>name

2011-12-09 14:42:57 5257

原创 Not unique table/alias

参考:http://www.3389hack.com/xueyuan/fuwuqi/MySQL/4165.html内容如下:Not unique table/alias错误编号:1066问题分析:SQL 语句中出现了非唯一的表或别名。解决方法:1、请检查出现问题位置的 SQL 语句中是否使用了相同的表名,或是定义了相同的表别名。2、检

2011-12-09 12:55:14 23050 2

原创 Program received signal SIGPIPE, Broken pipe.

参考:http://blog.csdn.net/hejianhua/article/details/5994915

2011-12-09 12:43:42 808

原创 传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)

背景:在C#代码中,需要将一个结构体转为字符数组的形式结构的形式类似于:struct usrInfo{ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] name; public int ID;}调用自己的结构体转换函数,将其转为字符数组形式但是提示如下错误:传

2011-12-09 10:37:03 12828 2

原创 传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)

背景:在C#代码中,需要将一个结构体转为字符数组的形式结构的形式类似于:struct usrInfo{ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] name; public int ID;}调用自己的结构体转换函数,将其转为字符数组形式但是提示如下错误:传递给

2011-12-09 10:28:12 3019

转载 StructLayout特性

转自:http://www.cnblogs.com/JessieDong/archive/2009/07/21/1527553.htmlStructLayout特性          公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递给需要指定布局的非托管代码,则显式控制类布局是重要的。它的

2011-12-09 10:26:31 651

转载 Ubuntu安装配置Mysql

转自:http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html三种安装方式:  1. 从网上安装 sudo apt-get install mysql-server。装完已经自动配置好环境变量,可以直接使用mysql的命令。    注:建议将/etc/apt/source.list中的cn改成us,美国的服务器

2011-12-08 20:42:25 505

原创 C# 动态创建Access数据库以及数据表

参考自:http://www.cnblogs.com/guanjinke/archive/2006/11/30/577241.html在上一篇中说到,直接用File类的静态方法Create()方法创建具有固定格式的Access数据库文件并不成功。这里介绍正确的创建方法。创建数据库文件:步骤一:在项目引用中增加COM组件:Microsoft ADO Ext. 2.8 for DDL

2011-12-08 13:36:30 7574

原创 C# 动态创建Access数据库时的错误:“不可识别的数据库格式”

需要用C#动态创建Access数据库,于是有了下文。使用的是Office 2007,数据库文件的格式为.accdb刚开始的时候,以为去检测文件是否存在,如果不存在的话直接创建数据库文件就好了。代码如下:string filePath = new DirectoryInfo(".").FullName + @"\data.accdb"; if (!File.

2011-12-08 12:38:02 3632

原创 cannot find -lmysqlclient

背景:在Linux下,用MySQL数据库编写程序,需要用到-lmysqlclient链接MySQL库但是在链接到过程中,提示错误:cannot find -lmysqlclient 查错:(1)-lmysqlclient中的-l是选项,-lmysqlclient表示链接libmysqlclient.so,文件的前缀和后缀都是默认的。使用 locate *mysqlclient*

2011-12-07 10:24:46 3173

原创 “warning: the `gets' function is dangerous and should not be used.

在编译到时候碰到如下问题:“warning: the `gets' function is dangerous and should not be used.在另外一个环境下编译到时候是没有问题到,现在搬到另外一个环境下出该问题,可能是环境问题在网上查了下,说是“ Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets”fgets()函数的基本用法为:fget

2011-12-07 08:50:57 1581

原创 C# C++ 结构体匹配问题

背景:在套接字的一端,C#中定义了固定的结构体,然后用该结构体给C++端的另外一端发送消息。代码:结构体如下所示:typedef struct _Info{ char name[16]; char cipher[16]; char signature[256];}Info;C#端代码如下: Info myInfo; s

2011-12-06 13:13:23 918

原创 Linux连接MySQL时的错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

连接本地的MySQL数据库引擎时候出现的错误。用mysql_error()函数获取到错误提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)为了查看原因,直接在命令行下输入命令查看是否能进入MySQL(MySQL -u usrName -p),仍然提示:Can't co

2011-12-02 14:04:42 12499

原创 一个特别的multiple definition错误

环境:ubuntu 11.10,Emacs在BasicMsgSender类中定义了两个静态方法:SendTcpMsg(),SendUdpMsg(),用于一般的发送消息。在其他两个类中,引用了该方法:BasicMsgSender::SendTcpMsg()在链接的时候,提示这两个静态函数被重复定义multiple definition of `BasicMsgSender::sendTc

2011-12-02 13:09:54 787

高质量C 编程指南

高质量C++/C 编程指南 帮助提高编程质量

2011-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除