将字符串的一部分拷贝到另一个字符串

主要3中实现方式:strncpy()、string类、memcpy()

通过string实现更方便。


1、strcpy()

   无法实现将字符串的一部分拷贝给另一个字符串。

2、strncpy()

利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中。strncpy()函数有3个参数:第一个参数是目录字符串;第二个参 数是源字符串;第三个参数是一个整数,代表要从源字符串拷贝到目标字符串中的字符数。以下是一个用strncpy()函数拷贝字符串的一部分的例子: 

#include
#include
#include

int main(int argc, char **argv)
{
    char buf[20]="6.0 1257487794/n";
    char da[5]={0};
    char num[15]={0};    
    int i=0, j=0;

    strncpy(da, buf, 3);

    strncpy(num, buf+(strlen(buf)-11) , 10);
    
    printf("buf= %s, da= %s, num= %s/n", buf, da, num);  

    return 1;

 }

     在上例中,第一次调用strncpy()函数时,它将源字符串的头3个字符拷贝到da中。第二次调用strncpy()函数时,它将源字符串的最后10个字符拷贝到num中,其实现过程为:
    (1)用strlen()函数计算出buf字符串的长度,即strlen(buf)。
    (2)将buf的长度减去11(10是将要拷贝的字符数再加中间的‘ ’字符),得出buf中剩余的字符数,即pstrlen(buf)-11。
    (3)将strlen(buf)-11和buf的地址相加,得出指向buf中倒数第10个字符的地址的指针, 即buf+(strlen(buf)-11)。这个指针就是strncpy()函数的第二个参数。
    (4)在strncpy()函数的第三个参数中指定要拷贝的字符是10。

 

    打印输出如下所示:

    wangwei@wangwei-desktop:~/work/data_check$ ./test
    buf= 6.0 1257487794
     , da= 6.0, num= 1257487794


3、memcpy()

4、string

string类的构造函数

string(const string &str,string size_type pos=0,size_type n=npos)

将一个string对象初始化为对象 str中从位置pos开始到结尾的字符,  或者从位置开始的n个字符。


	int loc1 = im_name.find_last_of('\\');
	int nameLen = sizeof(im_name);
	string imgName(im_name,loc1+1);

im_name为某图片的绝对全路径,  通过string类的查找函数 找到最后一个文件夹的反斜杠,得到索引后,利用string类的 构造函数,即可实现

将 im_name的字符串中的图像文件名 提取到 新的字符串 imgName中。















你可能感兴趣的:(c++)