C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++实现字符串的部分复制

C++如何实现字符串的部分复制

作者:CNDaisy

这篇文章主要介绍了C++如何实现字符串的部分复制问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

C++实现字符串的部分复制

提示

函数 strmncpy 的原型为:

void strmncpy(char *s, int m, int n, char *t);

参数 s 指向源字符串,t 指向字符串复制的目标单元,函数功能为将 s 指向字符串从第 m 个(从0开始编号)字符开始的连续 n 个字符复制到 t 指向的存储单元;

如果第 m 个字符后面的字符数不足 n 个,则复制到 ‘\0’为止;

如果 s 的长度不到 m,则复制空串。

例如:

char *s = "abcdefghijklmn";
char t[20];
strmncpy(s,4,6,t);
cout << t << endl;

输出结果为:efghij

测试说明

测试输入:

abcdefghjkksdsd
5 7

预期输出:fghjkks

测试输入:

asdftyuioplkm
3 9

#include <iostream>
using namespace std;
void strmncpy(char* s, int m, int n, char* t);
int main()
{
    char s[128], t[128];
    int m, n;
    cin >> s;     // 输入源串
    cin >> m >> n;     // 输入m和n
    strmncpy(s, m, n, t);     // 字符串复制
    cout << t << endl;     // 输出复制结果
    return 0;
}
// 函数strmncpy:字符串的部分复制,将s指向字符串从第m个字符开始的n个字符复制的t中
// 参数:s-指向源字符串,t-指向目标字符串,m-起始位置,n-字符个数
// 返回值:无
void strmncpy(char* s, int m, int n, char* t)
{
    // 请在此添加代码,实现函数strmncpy
    /********** Begin *********/
    char* p = s;//这个用来跑
    char* q = t;//这个用来存
    int a = 0;//用于执行循环的次数
    p = p + m;//直接把地址改到目标数组的目标位置上去,最简单
    while (a < n)
    {
        *q++ = *p++;//把符合的值赋到用来存的指针这边
        a++;
    }
    *q = '\0';//结束,输出*q
    /********** End **********/
}

这是我想到最快的方法,希望我的代码可以帮到有需要的人

c++字符串复制/string、char*、char[]转换

1.char*转string:可以直接赋值。

2.char[]转string:可以直接赋值。

3.char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。

4.string转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。

5.string转char*:调用string对象的c_str函数或data函数或copy函数。

6.char[]转char*:直接赋值即可。

主要列举下char*复制到char*

错误方法1:

char *a = char *b

错误原因:类型是指针,直接赋值会使两个指针指向同一个地址,改动一个另一个也会变。

错误方法2:

string a=char *b
char *c=a.data() //或者char *c=a.c_str()

错误原因:string.data()返回值是const char*类型,不是char*类型。

正确方法:

string a=char *b
char *c=(char*)a.data() //或者char *c=a.c_str()

其他方法:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文