Как использовать символ «+» в качестве строки

Ну, я пытаюсь сохранить номер телефона в виде строки. Для удобства использования хочу добавить "+" символ программно. Вот так:

String cepNo ="+" + "901234567";

Но программа выдает эту ошибку.

exit status 1
invalid operands of types 'const char [2]' and 'const char [13]' to binary 'operator+'

Как добавить "+" начало строки.

, 👍1

Обсуждение

Строковый литерал не является строкой. Вы не можете объединить их так. Это Си, а не Бейсик., @Majenko

Ошибка ардуино на +, а не на "+"., @Tirdad Sadri Nejad


2 ответа


Лучший ответ:

4

Вы не можете добавлять строки 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");
,

2

используйте String cepNo = String("+") + "901234567"; или же Строка a = "+"; Строка cepNo = a + "901234567";

,

Или просто не используйте оператор +., @DataFiddler