наполнение строки значениями из char переменных

Тема в разделе "Arduino & Shields", создана пользователем zsm, 12 фев 2017.

  1. zsm

    zsm Гик

    всем привет , объясните пожалуйста,
    возможно ли наполнить пустую строку, char переменными
    есть строка
    String val = "";
    есть считанные из eeprom данные
    char nn1 = EEPROM.read(1);//9(57)
    char nn2 = EEPROM.read(2);//0(48)
    char nn3 = EEPROM.read(3);//4(52)
    как сделать так чтобы
    val = "904" ?
    пробовал такого типа конструкции
    val += (nn1,nn2,nn3);
    val меняется но не на то что нужно)
     
  2. rkit

    rkit Гуру

    Код (C++):
    char* str[3];
    for(byte i = 0; i < 3; i++) {
      str[i] = EEPROM.read(i+1);
    }
    String val = String(str);
     
    arkadyf и zsm нравится это.
  3. zsm

    zsm Гик

    спасибо,
    на последнюю строку компилятор ругается call of overloaded 'String(char* [3])' is ambiguous
     
  4. rkit

    rkit Гуру

    char str[3];
    без указателя
     
    zsm нравится это.
  5. zsm

    zsm Гик

    Спасибо , то что нужно.
     
  6. zsm

    zsm Гик

    возникла странная проблема:
    полученная таким образом строка почему то перестала искаться в другой строке

    Код (C++):
    if (val2.indexOf(val) > -1 ) {       };
    когда она задавалась явно в начале
    Код (C++):
    String val = "567";
    приведенный выше пример нормально работал
    (искал в строке val2 строку val и найдя выдавал индекс)

    может проблема в том что при явном определении строка являлась константой ,
    а после переназначения перестает ей быть?
    пробовал из этих соображений переназначение
    Код (C++):
    val+ = String(str);
    но после этого совсем все плохо становится)
     
  7. mcureenab

    mcureenab Гуру

    Тут две ошибки.
    Нужно объявить массив на один элемент больше и поместить в конец 0. Иначе к первым трем символам могут прицелиться байты из стека.
    Код (C++):
    char str[4];
    for(byte i = 0; i < 3; i++) {
      str[i] = EEPROM.read(i+1);
    }
    str[3] = 0;
    String val(str);
     
     
    zsm нравится это.
  8. zsm

    zsm Гик

    спасибо попробую вечером
     
  9. rkit

    rkit Гуру

    Да, точно. Не надо на сон грядущий код писать
     
    zsm нравится это.
  10. zsm

    zsm Гик

    все как надо заработало, спасибо.