我在C++中有两个数组,我想把一个数组追加到另一个数组的末尾,这样:
char byte1[] = {0x00};
char byte2[] = {0x01};将这两项相加应为{0x00,0x01}。我该怎么做呢?在Java语言中使用System.arraycopy()很简单,但是我不确定在C++ /C中哪个库可以帮助我完成这一任务,因为我正在为一个微控制器编写代码。
发布于 2012-07-18 01:03:01
如果你使用C语言,你可以这样做:
//Whatever sizes your stating arrays are.
const int S_ARR1 = 3;
const int S_ARR2 = 2;
//Create buffer that can hold both.
char combined[S_ARR1 + S_arr2];
//Copy arrays in individually.
memcpy(combined, byte1, S_ARR1);
memcpy(combined + S_ARR1, byte2, S_ARR2);如果你想要C++,不要一开始就使用字节数组。使用std::vector,因为它充当一个数组,可以跟踪自己的元素数量,这样您就会感觉更像是在java世界中:)
关于嵌入式C++矢量内存的一点警告:
你在一个微控制器中,std::vector会浪费大量内存,因为它会以当前大小的倍数增长。它里面的东西越多,你可能浪费的就越多。话虽如此,这是一个很棒的类,只要你知道它是如何处理内存的,它就是一个很好的选择。
发布于 2012-07-18 01:00:44
你不能,因为你已经写在那里了,C为那些数组分配固定的内存,以适应你初始化它们的数据的大小,即1字节
如果你知道你要使用多少数据,你可以用char byte[10];为10个元素初始化一个更大的数组,但你不能在C中创建时自动填充它。如果你直到运行时才知道你需要多少数据,那么你需要用new (或malloc或c)来分配它。
如果您想要类似java行为,请查看std::vector,如果您的微控制器支持
发布于 2012-07-18 01:05:48
尝试使用Arduino环境中的string类,它原本是通过avr-g++编译器在AVR上使用的。不过,我不确定它是否支持空(0)字节。
http://arduino.cc/en/Reference/StringObject http://github.com/arduino/Arduino/blob/master/hardware/arduino/cores/arduino/WString.cpp
https://stackoverflow.com/questions/11527249
复制相似问题