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