C ++将char数组的一部分复制到另一个char数组

时间:2012-11-26 18:37:22

标签: c++

我正在尝试将字符串(或char *)的一部分复制到另一个字符串(或另一个字符*)

char * first_string = "Every morning I"
char * second_string = "go to the library, eat breakfast, swim."
char * final_string;

我想将second_string的 part 复制到first_string中。

例如:

每天早上我都吃早餐。

允许您从字符串中的特定点开始仅复制字符串的一部分的功能是什么?

注意:如果可能的话,我不想使用字符串变量,而是使用char *,甚至是char数组。

4 个答案:

答案 0 :(得分:7)

它是std::copy,但是使用您的代码会导致未定义的行为,因为您有指向字符串文字的指针,这些字符串文字是非法修改的。

你需要像

这样的东西
char first_string[256] = "Every morning I";
char second_string[256] = "go to the library, eat breakfast, swim.";

std::copy(
    &second_string[23],
    &second_string[36],
    &first_string[strlen(first_string)]
);

指数可能已关闭。

答案 1 :(得分:3)

如果你真的想,请使用strcat(如果你不使用字符串,你应该可以使用C函数):

const char * first_string = "Every morning I"
const char * second_string = "go to the library, eat breakfast, swim."
char final_string[80]; // make sure it's big enough - I haven't counted ;-)

strcpy(final_string, first_string);     // copy to destination
strcat(final_string, second_string+18); // append part of the second string

编辑:制作了char * const

答案 2 :(得分:0)

您可以使用strstr()搜索所需部分的开头,然后strcat()进行连接。

char * first_string = "Every morning I";
char * second_string = "go to the library, eat breakfast, swim.";
char * final_string;

char* s = "eat";
char* r = strstr(second_string, s);

strcat(final_string, first_string);
strcat(final_string, " ");
strcat(final_string, r);

答案 3 :(得分:0)

我会像这样使用'strncat()':

const char * first_string = "Every morning I";
const char * second_string = "go to the library, eat breakfast, swim.";

char final_string [200];

//Copies first string first
strcpy(final_string, first_string);

//Copies second string
strncat(final_string, second_string[ text_position ], text_length);

text_position替换为您可能希望开始复制文本的second_string位置,并将text_length替换为您要复制的文本部分的长度。

通过这种方式,您可以复制单独的文本部分,而不必从字符串的某个点复制到结尾。

相关问题