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);