C++字符串拷貝函數(所有性能已在g++和vc下測試)

1. void bcopy(const void *src, void *dest, size_t n);

功能: 拷貝n字節內容從src到dest

說明: 該函數在內存重疊情況下仍然正常,該函數建議不再使用,而是用memcpy代替

返回值: 無

 

2. void *memcpy(void *dest, const void *src, size_t n);

功能: 拷貝n字節內容從src到dest

說明: src和dest在內存中不可重疊,如果重疊請使用memmove代替

返回值: 返回 dest 地址

 

3. void *memmove(void *dest, const void *src, size_t n);

功能: 拷貝n字節內容從src到dest

說明: src和dest在內存中可以重疊,但是效率比memcpy略低!

返回值: 返回 dest 地址

 

4. void *memccpy(void *dest, const void *src, int c, size_t n);

功能: 拷貝n字節內容從src到dest,但是如果碰到c字符則停止拷貝.

返回值: 返回NULL或者字符c的下一地址

 

5. char *stpcpy(char *dest, const char *src);

功能: 拷貝src到dest

說明: 該函數不在ANSI和POSIX標準之內;vc6.0不支持

返回值: 返回 dest + strlen(src)的地址

 

6. char *strcpy(char *dest, const char *src);

功能: 拷貝src到dest

說明: 該函數可能溢出;源串和目的串的內存區域不能交疊,否則發生錯誤!

返回值: 返回 dest 的地址

 

 

7. char *strncpy(char *dest, const char *src, size_t n);

功能: 從src最多拷貝n個字節到dest.

說明:(1).如果src的長度小於n,那麼將會連同'/0'拷貝到dest,否則dest將不會以'/0'結束(這時記得手動加'/0')!

         (2)源串和目的串的內存區域不能交疊,否則發生錯誤!

         (3)n最好不要超過src和dest的長度,dest內n字節的內容將會被賦值,src結束後的部分全部將全部置'/0'!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章