2015-08-21 141 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你計劃好了嗎?