Как использовать символ «+» в качестве строки
Ну, я пытаюсь сохранить номер телефона в виде строки. Для удобства использования хочу добавить "+" символ программно. Вот так:
String cepNo ="+" + "901234567";
Но программа выдает эту ошибку.
exit status 1
invalid operands of types 'const char [2]' and 'const char [13]' to binary 'operator+'
Как добавить "+" начало строки.
@mehmet, 👍1
Обсуждение2 ответа
Лучший ответ:
Вы не можете добавлять строки C (т. е. массивы char
, заканчивающиеся NUL) с
Оператор +
. Он работает только с объектами String
. Зато можно добавить
объект String и C-строку, потому что в этом случае компилятор
неявно преобразует строку C в объект String:
String phone_number = "901234567";
phone_number = "+" + phone_number;
Последняя строка интерпретируется компилятором как
phone_number = String("+") + phone_number;
При этом я рекомендую вам стараться избегать объектов String, если возможный. Они используют динамическое выделение памяти, что несет в себе риск фрагментация кучи. То же самое можно сделать с помощью простых строк C:
char phone_number[] = "901234567";
char full_phone_number[strlen(phone_number) + 2];
strcpy(full_phone_number, "+");
strcat(full_phone_number, phone_number);
Обратите внимание на размер второй строки: strlen(phone_number) + 2
. Тебе нужно
один дополнительный char
для знака +
и еще один для строки NUL
терминатор.
Теперь со строками C вы можете добиться большего успеха и избежать копирования: достаточно резерва
номер в массиве для полного номера (включая «+»), а затем заполните
цифры, начиная со второго слота в массиве char
. Затем вы можете
добавьте знак +
позже:
char phone_number[16];
strcpy(phone_number + 1, "901234567");
phone_number[0] = '+';
Хотя лично я бы написал знак «+» и NUL, инициализация массива:
char phone_number[16] = "+";
strcat(phone_number, "901234567");
используйте String cepNo = String("+") + "901234567";
или же
Строка a = "+"; Строка cepNo = a + "901234567";
Или просто не используйте оператор +., @DataFiddler
- Очень простая операция Arduino Uno Serial.readString()
- Как преобразовать строку в массив байтов
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Arduino: как записать значение переменной в текстовый файл и изменить его на SD-карте?
- Буфер char в String в Arduino UNO
- Сохранить начальный ноль HEX в строку RFID RC522 Arduino
- Разделение Serial.readString на массив строк
Строковый литерал не является строкой. Вы не можете объединить их так. Это Си, а не Бейсик., @Majenko
Ошибка ардуино на +, а не на "+"., @Tirdad Sadri Nejad