2015-08-21 98 views
1

我想将两个字符串保存到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]); 
    } 
} 

的问题是数据的串联:

String part1 = "Hello"; 
String part2 = "World"; 
String data = part1 + byte 255 + part2 + byte255; 

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

回答

1

你应该能够做到这一点使用字符串连接,像这样:

String part1 = "Hello"; 
String part2 = "World"; 
String separator = "\xFF"; // That's character 255, in hex 
String data = part1 + separator + part2 + separator; 

你也可以做级联就在你saveToE功能,如:

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]); 
    } 
} 
+2

当然,这不是C++中的问题。这个问题是否恰当地标记? –

+0

@BrianMcFarland我的理解是,这是Arduino库的一部分,我认为它是C++的一部分。这里有一个[link](https://www.arduino.cc/en/Tutorial/StringAppendOperator)给我认为与这里相关的文档。 – dasblinkenlight

+0

从该页面看,一个声明为void setup()而不是void setup(void)的函数足以使它非常明显,这不是'C'。然后'Serial.begin(9600)''几乎达成了交易。 –

0

试试这个:

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

然后你应该可以使用字符串作为separotor ho你计划好了吗?