簡體   English   中英

C++ 將一個字符數組的一部分復制到另一個字符數組

[英]C++ copy a part of a char array to another char array

我試圖將字符串(或字符 *)的一部分復制到另一個字符串(或另一個字符 *)中

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

我想將 second_string 的一部分復制到 first_string 中。

例如:

每天早上我都吃早餐。

允許您從字符串中的特定點開始僅復制字符串的一部分的函數是什么?

注意:如果可能,我不想使用字符串變量,而是使用 char *,甚至是 char 數組。

它是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)]
);

指數可能會關閉。

如果您真的想要,請使用 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

我會像這樣使用“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您要復制文本的部分的長度。

通過這種方式,您可以復制文本的不同部分,而不必從字符串的某個點復制到末尾。

您可以使用帶有“,”的 strtok 作為分隔符來分隔第二個字符串的各個部分,然后使用 strcat 將該部分附加到第一個字符串上

您可以使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM