剑指offer_常用编程技巧总结2

剑指offer_常用编程技巧总结 2

参考我的另一篇博客:剑指offer_常用编程技巧总结

http://blog.csdn.net/cmm0401/article/details/73694921


1、string 的结尾字符:

全局的 std::getline 返回 std::string,这个不一定是 '\0' 结尾。有的编译器会加,有的编译器不会加。

但是,注意:新的C++标准C++11里面规定: std::string 一定是以 '\0' 结尾,就看你的编译器有没有实现新标准了。

istream::getline 返回 c 字符数组,这个一定是 '\0' 结尾。

2、#include<cstring>    //memset函数的头文件

    const int tablesize=256;
    unsigned int hashtable[tablesize];
    memset(hashtable, 0, sizeof(int)*tablesize);

3、字母的大小写转换

【用C语言标准库函数toupper,tolower】
头文件:cctype   c下面:ctype.h
转大写:toupper
转小写:tolower

缺陷:只能转换单个字符。

Example:
    char ch = 'a';
    ch2 = towupper(ch); // A 

【std::string 转换大小写】
很遗憾,std::string 没有提供大小写转换的功能,所以只能用STL中的transform结合toupper/tolower完成。
头文件: string, cctype,algorithm
转小写
transform(str.begin(),str.end(),str.begin(),tolower);
transform(wstr.begin(), wstr.end(), wstr.begin(), towlower);
转大写
transform(s.begin(), s.end(), s.begin(), toupper);
transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);

Example:
    wstring wstr =L"Abc";
    transform(wstr.begin(), wstr.end(), wstr.begin(), towupper); 

4、两个数学函数:

floor():功能: 函数返回参数 不大于 arg 的最大整数。例如,

y = 6.04;
x = floor( y );

x的值为 6.0

ceil():功能: 函数返回参数 不小于 num 的最小整数。例如, 

y = 6.04;
x = ceil( y );

x的值为 7.0

abs(),labs(),fabs()。

5、数字转字符串、字符串转数字(c++函数)

数字转字符串:num2str()

字符串转数字:str2num()
上面方法很简便, 缺点是处理大量数据转换速度较慢。C library中的  sprintf      sscanf  相对更快

可以用  sprintf  函数将数字输出到一个字符缓冲区中. 从而进行了转换...
例如:
已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S",  其中H是小时, M=分钟,S=秒

int H, M, S;
        string time_str;
        H=seconds/3600;
        M=(seconds%3600)/60;
        S=(seconds%3600)%60;
        char ctime[10];
        sprintf(ctime, "%d:%d:%d", H, M, S);    // 将整数转换成字符串
        time_str=ctime;           // 结果 

与sprintf对应的是  sscanf  函数, 可以将字符串转换成数字:

char str[] = "15.455";
    int i;
    float fp;
    sscanf( str, "%d", &i );         // 将字符串转换成整数   i = 15
    sscanf( str, "%f", &fp );      // 将字符串转换成浮点数 fp = 15.455000
    //打印
    printf( "Integer: = %d ",  i+1 );
    printf( "Real: = %f ",  fp+1 ); 
    return 0;


6、C++常用头文件集合:

C/C++常用头文件及函数汇总

http://blog.csdn.net/thisispan/article/details/7470335



7、












注释:ASCII 码表包含数值在0-127之间的字符的十进制、八进制以及十六进制表示。

十进制八进制十六进制字符 
4860300 
4961311 
5062322 
5163333 
5264344 
5365355 
5466366 
5567377 
5670388 
5771399

6510141A 
6610242B 
6710343C 
6810444D 
6910545E 
7010646F 
7110747G 
7211048H 
7311149I 
741124AJ 
751134BK 
761144CL 
771154DM 
781164EN 
791174FO 
8012050P 
8112151Q 
8212252R 
8312353S 
8412454T 
8512555U 
8612656V 
8712757W 
8813058X 
8913159Y 
901325AZ
98                    142                         62                           b                    
99 14363c 
100 14464d 
101 14565e 
102 14666f 
103 14767g 
104 15068h 
105 15169i 
106 1526Aj 
107 1536Bk 
108 1546Cl 
109 1556Dm 
110 1566En 
111 1576Fo 
112 16070p 
113 16171q 
114 16272r 
115 16373s 
116 16474t 
117 16575u 
118 16676v 
119 16777w 
120 17078x 
121 17179y 
122 1727Az



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值