Як записати std::string у ESP32 NVS

Див. також: Як прочитати значення ESP32 NVS у std::string

Запис std::string у NVS досить простий. Ви можете просто використати .c_str(), щоб отримати вказівник const char*, а потім продовжити, як показано в Як записати string (const char*) у ESP32 NVS

Ви можете використати цю утилітну функцію для запису рядка (const char*) у NVS:

nvs_write_string.cpp
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;
}

Приклад використання

Цей приклад базується на Як ініціалізувати NVS на ESP32. Найважливіше, він передбачає, що ви вже ініціалізували NVS і myNVS існує та є дійсним.

nvs_write_usage_example.cpp
char mySerialNo[128] = {0};

_NVS_WriteString(myNVS, "SerialNo", "0000001");

Це запише значення 0000001 у NVS з ключем SerialNo

Зверніть увагу, що рядки NVS обмежені за довжиною (тобто: довжина зберігається в NVS) і не обов’язково завершуються NUL. Цей код не зберігає NUL-термінатор у NVS.


Дивіться схожі статті за категоріями: ESP8266/ESP32