C++ 将字节连接到字符串

C++ 将字节连接到字符串,c++,arduino,C++,Arduino,我想将两个字符串保存到EEPROM中,用255(或0)字符分隔每个字符串,以便以后我可以读取它们,知道每个字符串何时结束 void saveToE(String data) { int str_len = data.length() + 1; char char_array[str_len]; data.toCharArray(char_array, str_len); for(int addr = 0; addr < str_len; addr++){ EEPR

我想将两个字符串保存到EEPROM中,用255(或0)字符分隔每个字符串,以便以后我可以读取它们,知道每个字符串何时结束

void saveToE(String data) {
  int str_len = data.length() + 1; 
  char char_array[str_len];
  data.toCharArray(char_array, str_len);
  for(int addr = 0; addr < str_len; addr++){
    EEPROM.write(addr, char_array[addr]);
  }
}

如何在第1部分和第2部分之后添加字节255?

您应该能够使用字符串连接来完成此操作,如下所示:

String part1 = "Hello";
String part2 = "World";
String separator = "\xFF"; // That's character 255, in hex
String data = part1 + separator + part2 + separator;
void saveTwoStringsToE(String one, String two) {
  int str_len1 = one.length(); 
  int str_len2 = two.length(); 
  // Add two bytes for 255 separators, and an extra byte for null terminator
  char char_array[str_len1+str_len2+3];
  one.toCharArray(char_array, str_len1);
  char_array[str_len1] = 255;
  two.toCharArray(char_array+str_len1+1, str_len2);
  char_array[str_len1+1+str_len2] = 255;
  for(int addr = 0; addr < str_len1+str_len2; addr++) {
    EEPROM.write(addr, char_array[addr]);
  }
}
您还可以在
saveToE
函数中正确执行串联,如下所示:

String part1 = "Hello";
String part2 = "World";
String separator = "\xFF"; // That's character 255, in hex
String data = part1 + separator + part2 + separator;
void saveTwoStringsToE(String one, String two) {
  int str_len1 = one.length(); 
  int str_len2 = two.length(); 
  // Add two bytes for 255 separators, and an extra byte for null terminator
  char char_array[str_len1+str_len2+3];
  one.toCharArray(char_array, str_len1);
  char_array[str_len1] = 255;
  two.toCharArray(char_array+str_len1+1, str_len2);
  char_array[str_len1+1+str_len2] = 255;
  for(int addr = 0; addr < str_len1+str_len2; addr++) {
    EEPROM.write(addr, char_array[addr]);
  }
}
void saveTwoStringsToE(字符串一,字符串二){
int str_len1=1.length();
int str_len2=two.length();
//为255个分隔符添加两个字节,为空终止符添加一个额外字节
char char_数组[str_len1+str_len2+3];
toCharArray(char_数组,str_len1);
字符数组[str_len1]=255;
二、toCharArray(char_数组+str_len1+1,str_len2);
字符数组[str_len1+1+str_len2]=255;
对于(int addr=0;addr
试试这个:

char separator_char[1];
separator_char[0] = 255;
String separator_string = String(separator_char);

那么你应该能够用字符串作为分离器,你是如何计划的。< /P>这不是C++中的东西,当然。布莱恩-麦克法兰德:我的理解是,这是ARDUNO图书馆的一部分,我认为它位于C++之上。这是我认为与此相关的文档的一个示例。从该页面上,看到一个声明为

void setup()
的函数而不是
void setup(void)
,这就足够明显了,这不是
C
。然后
Serial.begin(9600)几乎是密封的。Brang-McFaland我在链接的手册页上四处搜寻,看起来他们有自己的语言,它是基于C++的一个子集。你是对的,这是C++,问题已经被编辑了。非常感谢。