C++ strcpy与strncpy的注意事项

1. strcpy()

   strcpy的函数式为:strcpy(dst,src),因为char数组最后以’\0’为结尾,所以需要注意的是如果strlen(src)>strlen(dst)时,则最后的’\0’无法复制,则会导致出错,即dst的大小至少要等于src的大小,保证strcpy能复制最后的’\0’。

2. strncpy()

   strncpy的函数式为:strcpy(dst,src,n),即将src的前n个字符复制给dst,如果dst本来就有内容,并且本次拷贝的字符中不包含’\0’,则内容会连在一起,举个栗子:

    char dst[]="Hello world";
    strncpy(dst,"AB",2);

输出的结果是ABllo world,对于strncpy要注意的是当n< strlen(src)时,同样会不能复制’\0’,如果n>strlen(src),则可以正确复制。同样这里也要这dst的大小于n的大小的关系。建议在初始化字符串数组时使用char str[]={0}。

总的来说,strcpy用来复制字符串,如果dst长度足够,其会拷贝最后的结尾符’\0’,而strncpy是用来拷贝字符的,只拷贝固定的字符个数,如果包含了’\0’则拷贝并在此结束,且需要dst大小足够用来存储,如果不包含’\0’,则不拷贝。

C++中Map如何通过key得到value:

 iter = map.find(key);
 if(iter!=map.end())
 {
     return iter->second;
 }
 return null;

字符数组转化成string类型:

char str[] = "test";
string s(ch);
string s = str;//string s; s=str;也可用于加法

将string类型转换为字符数组:

char buffer[5];
string s("test");
len = s.copy(buffer, 4);
buffer[len] = '\0';

或者

char buffer[5];
string s("test");
strcpy(buf, str.c_str());//strncpy(buf, str.c_str(), 5);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值