c++在c的char类型基础上引入了string类,从而更加方便地对字符串进行操作。但是如果是不会使用string类也会带来很多麻烦。在自己编码的基础上总结了几点误区。

1、char*类型与string类型的相互转换

从char*到string,需要调用string类的构造函数
  如:char* a; string s(a);
从string到char*,需要使用string类的c_str()函数
  如:string s = “hello”, const char* c = s.c_str();

Read more »

最近做课程设计,接触到了Huffman编码与Morse编码。在此总结,分享。之前认为编码是个很神奇的存在,现在能够用代码实现,感觉还是很开心的!

一、Huffman编码

1、概念(摘自wikipedia

  霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)演算法。也称“哈夫曼编码”,“赫夫曼编码”。1952年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多馀编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。

  在计算机资料处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

Read more »

因为之前面试的时候遇见这样的题,今天又遇到了,才想起来,所以拿出来总结一下。

1
2
3
4
5
6
7
8
//strcpy不合格实现
char *my_strcpy(char* dst, const char* src) {
assert(dst != NULL);
assert(src != NULL);
char* ret = dst;
while((*dst++ = *src++) != '\0') ;
return ret;
}

考虑特殊情况:

1
2
char a[] = "abc";
my_strcpy(a+1, a);

这时程序会崩溃!!

Read more »

#Linux网络连接问题解决

因为linux网络编程实验需要,需要对linux虚拟机进行联网。但是其中遇到了各种问题,尝试了很多解决方法。拿出来总结、分享一下。


1、基本指令与配置:

ifconfig 查看网卡信息
route -n 显示现在所有路由
ping IP地址(或者域名) 测试网络连接状况
sudo /etc/init.d/network restart 重启网络

网关配置:增加网关
前提是网关出现在route -n 的结果中,否则报错,进程不存在
sudo route add default gw 169.254.0.1

dns服务器配置
/etc/resolv.conf

dns生效优先级配置
dns 与 files(指/etc/hosts)顺序,让dns在前面的优先生效
grep hosts /etc/nsswitch.conf
/etc/nsswitch.conf
/etc/hosts

Read more »