How to write std::string to ESP32 NVS
Also see: How to read ESP32 NVS value into std::string
Writing a std::string
into NVS is pretty easy. You can just use .c_str()
to obtain a const char*
pointer and then proceed as shown in How to write string (const char*) to ESP32 NVS
You can use this utility function to write a string (const char*
) into the NVS:
bool NVSWriteString(nvs_handle_t nvs, const std::string& key, const std::string& value) {
esp_err_t err;
if((err = nvs_set_blob(nvs, key.c_str(), value.data(), value.size())) != ESP_OK) {
Serial.printf("Failed to write NVS key %s: %srn", key, esp_err_to_name(err));
return false;
}
return true;
}
Usage example
This example is based on How to initialize NVS on ESP32. Most importantly, it assumes you have already initialized the NVS and myNVS
exists and is valid.
char mySerialNo[128] = {0};
_NVS_WriteString(myNVS, "SerialNo", "0000001");
This will write the value 0000001
to the NVS with key SerialNo
Note that NVS strings are length-delimited (as in: The length is stored in the NVS) and not neccessarily NUL-terminated. This code does not store the NUL terminator in NVS.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow