随笔分类 - C/C++
C/C++ discussion
摘要:很多操作系统都直接支持utf-8字符串操作,只有MS这个异类用的Unicode,就是所谓的ucs-2如果写关于跨平台的代码,那么避免不了要做编码转化这里贴一下今天写的把Unicode转化为Utf-8的代码Ucs2BeToUcs2Le负责将大端转化为小端Ucs2ToUtf8负责将Unicode转化为Utf-8Utf8ToUcs2负责将Utf-8转化为Unicode本转化函数只考虑了3个字节以下的编码,需要3个字节以上的同学请自行google了啊 1 // Convert Unicode big endian to Unicode little endian 2 unsigned Ucs2Be..
阅读全文
摘要:该算法采用分而治之的方法来进行排序,思想不错 1 //排序里面有std的sort了,效率更高,这个例子不是为了取代std::sort的,放在这里是做为一个例子体现分而治之的思想 2 template<typename Type> 3 Type min(Type a, Type b) { 4 //Type 类型需要实现了小于号的重载 5 return a < b ? a : b; 6 } 7 8 template<typename elemType> 9 void swap(std::vector<elemType> &array, int i,
阅读全文
摘要:1 /× 2 ×统计数组中元素出现的个数,将得到的统计个数记录在新数组的中 3 ×/ 4 5 void CountingSort(int *array, int length) 6 { 7 int t; 8 int i, z = 0; 9 int min, max;10 int *count;11 12 /*找出数组的最大最小值,确定计数的范围13 */14 min = max = array[0];15 for(i = 0; i < length; ++i) {16 if(array[i] < min)1...
阅读全文
摘要:/** *函数实现将网址进行如下操作 *www.google.com转成com.google.www 及mail.netease.com转成com.netease.mail * *不允许用STL,空间为0(1) * *C/C++ code * *void reverse(cha * ptr) *{ * * *} * ***/char* find_next_right_dot(char *str){ if(str == NULL) return NULL; char * src = str; //save the source string address whi...
阅读全文
摘要:2分快速排序C代码: 1 typedef unsigned char BYTE; 2 3 void swap(BYTE *a, BYTE *b) 4 { 5 if(a != b) { 6 *a = *a ^ *b; 7 *b = *b ^ *a; 8 *a = *a ^ *b; 9 }10 }11 12 /***13 *2路划分快速排序14 *15 **/16 int partition(BYTE *array, int left, int right)17 {18 int i = left - 1, j = ri...
阅读全文
摘要:在资源初始化的代码块中,除了用goto可以用作出错处理之外还可以使用do { } while(0)使用break就可以跳出来进行出错处理,缺点是少了标签的层次出错处理。C++实例代码:截自Mac OSX USB驱动 1 do { 2 if(!newDevice->init(deviceAddress, powerAvaliable, speed, maxPacketSize)) 3 break; 4 if(!newDevice->attach(this)) 5 break; 6 if(!newDevice->start(this)) { ...
阅读全文
浙公网安备 33010602011771号