C++ 将字符数组中的四个元素读入C++;

C++ 将字符数组中的四个元素读入C++;,c++,arrays,C++,Arrays,假设char*data=“02001100000000” 如何仅将前四个元素0200移动到另一个字符数组中?您可以使用strncopy: char *data = "02001110000000000" char dest[4]; strncopy(dest, data, 4); 请注意,strncopy不会复制空终止字符('\0'),因此dest这里不是字符串,它只是一个包含四个字符的数组。如果希望它是字符串“0200”,则必须将其定义为五元素数组,并自己附加'\0'字符。您可以使用strn

假设
char*data=“02001100000000”


如何仅将前四个元素
0200
移动到另一个字符数组中?

您可以使用
strncopy

char *data = "02001110000000000"
char dest[4];
strncopy(dest, data, 4);

请注意,
strncopy
不会复制空终止字符(
'\0'
),因此
dest
这里不是字符串,它只是一个包含四个
字符的数组。如果希望它是字符串“0200”,则必须将其定义为五元素数组,并自己附加
'\0'
字符。

您可以使用
strncopy

char *data = "02001110000000000"
char dest[4];
strncopy(dest, data, 4);

请注意,
strncopy
不会复制空终止字符(
'\0'
),因此
dest
这里不是字符串,它只是一个包含四个
字符的数组。如果您希望它是字符串“0200”,则必须将其定义为一个五元素数组,并自己附加
'\0'
字符。

假设您不需要将字符复制到新数组中(即,可以重复使用相同的分配内存),您可以为此执行一些指针技巧

数组只是指向第一个元素的指针

char firstFour[4] = &data[0];
or
char *firstFour = &data[0];
要从第一个数组中删除元素,请执行以下操作

data = &data[4];

假设您不需要将字符复制到新数组中(也就是说,重用相同的分配内存是可以接受的),您可以为此做一些指针技巧

数组只是指向第一个元素的指针

char firstFour[4] = &data[0];
or
char *firstFour = &data[0];
要从第一个数组中删除元素,请执行以下操作

data = &data[4];

char*newArray=newchar[4]


memcpy(newArray,data,4)

char*newArray=newchar[4]


memcpy(newArray,data,4)

你研究过吗?为什么你要使用Car数组而不是字符串?如果你使用C++?你研究过吗?为什么你想使用char数组而不是字符串如果你使用C++?< Cal> Char * data =“02001110000000000”< /C>是非法的C++ +斯拉瓦它被禁止,但不是非法的。它应该是
const char*
@CJxD它在c++03中被弃用了,现在它是非法的
char*data=“020110000000000”
在c++@Slava中是非法的它被弃用了,但不是非法的。它应该是
const char*
@CJxD它在c++03中被弃用,它是非法的nowUps,终止
\0
?Ups呢,终止
\0
呢?