string, CString, char[]与ASCII的字符表示
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对于字符串的处理在C++中可谓是一个颇为棘手的问题,而像JAVA和C#这种基于托管的平台则不存在此类问题。 我们先来讨论一下memcpy和strcpy这两个方法。 void* memcpy(void *memTo, const void *memFrom, size_t size); char* strcpy(char * dest, const char * src); 这两个方法的区别主要有一下3个: 1. 复制的内容不同,strcpy只能复制字符串,而memcpy则可以复制任何的内容,例如char[],int,struct,class等。 2. 复制的方法不同,strcpy不需要指定要复制的长度,当遇到在src字符串中的“\0”(空字符)时才停止复制,因此很容易出现溢出的现象。而memcpy则是根据其第三个参数决定要复制的长度的,避免了此类问题。 3. 用途不同,通常在复制字符串时用strcpy,而在复制其他类型的数据时则一般采用memcpy。 4. 若要复制ASCII为1的SOH,在memcpy中要用\0表示,如果直接输入0,则代表0这个字符。 需要注意的是: 在发送与设备之间通讯的命令的情况下,很多时候命令会包含空字符null,这种时候就要慎用strcpy了