1. 考虑重叠的 memcpy
void* MemoryCopy(void *dest, const void *src, size_t size) { assert(dest != NULL); assert(src != NULL); if (src == dest) return dest; char *d; const char *s; if ((src > dest) || (src <= (char*)dest - size)) { d = (char*)dest; s = (const char*)src; while (size--) *d++ = *s++; } else /* overlap 重叠情况从高位到低位复制 */ { d = (char*)dest + size - 1; s = (const char*)src + size - 1; while (size--) *d-- = *s--; } return dest; }
2. 字符串分割
(详细参见:https://www.cnblogs.com/htj10/p/11354618.html)
// delim分隔符,所有delim中包含的字符都是分隔符,保留空字符串"",前向分割 void split(const char* str, const char* delim, std::vector<std::string> &vRet) { if (NULL == str || NULL == delim || '