C/C++实现字符串拷贝和截取

代码如下:

#include <iostream>

void string_copy(char *dest, const char* src) {
    while((*dest++ = *src++) != '\0');
}

void string_copy(char* dest, const char* src, int len) {
    while (len && (*dest++ = *src++) != '\0') --len;
    while (len--) *dest++ = '\0';
}

char misspiggy[20], kermit[20];

main() {
    string_copy(misspiggy, "Miss Piggy");
    string_copy(kermit, "Kermit, the file transfer protocol", 6);
    std::cout << kermit << " and " << misspiggy;
}
以上代码实现了strcpy的功能。

-----------------------------------------------------------------------------------------------------------------------

C++字符串拷贝函数

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'!

### 回答1: 在C++中,可以使用`substr()`函数来截取字符串。该函数接受两个参数,第一个参数是起始位置,第二个参数是截取的长度。例如,以下代码截取字符串`s`的从第3个字符开始的4个字符: ```c++ std::string s = "Hello, world!"; std::string sub = s.substr(2, 4); // sub = "llo," ``` 注意,第一个字符的索引是0,因此第3个字符的索引是2。如果第二个参数缺省,则截取从起始位置到字符串结尾的所有字符。例如,以下代码截取字符串`s`的从第3个字符开始到结尾的所有字符: ```c++ std::string s = "Hello, world!"; std::string sub = s.substr(2); // sub = "llo, world!" ``` ### 回答2: C语言中可以使用库函数来截取字符串,常用的库函数有`strcpy`、`strncpy`和`strncat`。 首先是`strcpy`函数,它用于将源字符串拷贝到目标字符串中,语法如下: ```c char *strcpy(char *dest, const char *src); ``` 其中,`dest`是目标字符串,`src`是源字符串。这个函数会将源字符串中的字符拷贝到目标字符串中,直到遇到空字符`\0`为止。 接下来是`strncpy`函数,它用于将指定长度的源字符串拷贝到目标字符串中,语法如下: ```c char *strncpy(char *dest, const char *src, size_t n); ``` 其中,`dest`是目标字符串,`src`是源字符串,`n`是要拷贝字符个数。如果源字符串的长度小于`n`,则会将剩余的部分用空字符填充。 最后是`strncat`函数,它用于将一个字符串连接到另一个字符串的末尾,语法如下: ```c char *strncat(char *dest, const char *src, size_t n); ``` 其中,`dest`是目标字符串,`src`是要连接的源字符串,`n`是要连接的字符个数。这个函数会将源字符串中的字符连接到目标字符串的末尾。 通过调用这些库函数,我们可以实现字符串截取操作。比如,如果要截取一个字符串5个字符,可以使用`strncpy`函数,将5个字符拷贝到一个新的字符串中即可。 需要注意的是,在进行字符串截取操作时,需要保证目标字符串足够大,以免发生溢出。此外,还需要在截取后的目标字符串末尾添加空字符`\0`,以保证字符串的完整性。 ### 回答3: C++中的字符串截取可以通过使用`substr()`函数来实现。`substr()`函数需要两个参数,第一个参数是起始索引位置,第二个参数是要截取字符个数。 例如,如果我们有一个字符串`str = "Hello, World!"`,我们可以使用`substr()`函数来截取从索引位置为7的字符开始的5个字符,即`str.substr(7, 5)`。这将返回一个新的字符串"World"。 另外,如果我们只指定起始索引位置而不指定要截取字符个数,`substr()`函数将返回从指定索引位置到字符串末尾的所有字符。例如,`str.substr(7)`将返回"World!"。 需要注意的是,C++字符串的索引位置是从0开始的。也就是说,字符串的第一个字符的索引位置是0,第二个字符的索引位置是1,依此类推。 此外,我们还可以使用字符串的[]运算符来截取单个字符。例如,`str[0]`将返回字符串中的第一个字符。 总结来说,C++中可以通过`substr()`函数和[]运算符来截取字符串。使用`substr()`函数我们可以指定起始索引和截取字符个数来得到一个新的子字符串,使用[]运算符我们可以直接获取字符串中的单个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值