Урок по использованию String
Конструктор #
Строки и символы #
String(const char *cstr = "")String(const String &str)String(const __FlashStringHelper *str)explicit String(char c)
Создаёт
String и копирует в неё строку
String s1("string");
String s2(s1);
String s3(F("fstring"));
String s4('a');
Целые числа #
explicit String(unsigned char, unsigned char base = 10)explicit String(int, unsigned char base = 10)explicit String(unsigned int, unsigned char base = 10)explicit String(long, unsigned char base = 10)explicit String(unsigned long, unsigned char base = 10)
Создаёт
String с числом по указанному основанию
String s1(12345); // == "12345"
String s2(12345, DEC); // == "12345"
String s3(12345, BIN); // == "11000000111001"
String s3(12345, HEX); // == "3039"
С плавающей точкой #
String(float, unsigned char decimal = 2)String(double, unsigned char decimal = 2)
Создаёт
String с числом с плавающей точкой с указанной точностью
String s1(3.1415); // == 3.14
String s2(3.1415, 1); // == 3.1
String s3(3.1415, 4); // == 3.1415
Система #
reserve #
bool reserve(unsigned int size)
Зарезервировать память для строки, вернёт
true при успехе. Прибавление нового текста к строке в зарезервированное место происходит быстрееlength #
unsigned int length()
Вернёт длину строки в количестве символов
String s("1234");
s.length(); // == 4
charAt #
char charAt(unsigned int index)
Вернёт символ под индексом
index:
String s("abc123");
s.charAt(1); // == 'b'
getBytes, toCharArray #
void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index = 0)void toCharArray(char *buf, unsigned int bufsize, unsigned int index = 0)
Скопировать строку в буфер
buf размера bufsize, начиная с индекса index:
char buf[5];
String s("abcdef");
s.toCharArray(buf, 5, 2);
// buf == "cdef"
c_str, begin #
const char* c_str()const char* begin()
Вернёт указатель на начало строки
String s("abc");
s.c_str(); // -> 'a'
s.c_str()[1]; // == 'b'
end #
const char* end()
Вернёт указатель на конец строки
String s("abc");
s.end(); // -> '\0'
s.end()[-1]; // == 'c'
Сравнение #
compareTo #
int compareTo(const String &s)
Вернёт
0, если строки равны, аналог strcmpequals #
bool equals(const String &s)bool equals(const char *cstr)
Вернёт
true, если строки равны
String s1 = "abc";
s1.equals("abc"); // true
equalsIgnoreCase #
bool equalsIgnoreCase(const String &s)
Вернёт
true, если строки равны без учёта регистра символов
String s1 = "abc";
s1.equalsIgnoreCase("ABC"); // true
startsWith #
bool startsWith(const String &prefix)bool startsWith(const String &prefix, unsigned int offset)
Вернёт
true, если строка начинается со строки prefix. Можно сравнивать, начиная с символа под номером offset:
String s("abc123");
s.startsWith("ab"); // true
s.startsWith("12", 3); // true
endsWith #
bool endsWith(const String &suffix)
Вернёт
true, если строка заканчивается строкой suffix:
String s("abc123");
s.endsWith("23"); // true
Поиск #
indexOf #
int indexOf(char ch)int indexOf(char ch, unsigned int fromIndex)int indexOf(const String &str)int indexOf(const String &str, unsigned int fromIndex)
Вернёт позицию символа или подстроки в строке, поиск с начала строки. Вернёт
-1, если символ или подстрока не найдены:
String s("abcd");
s.indexOf('b'); // 1
s.indexOf('1'); // -1
s.indexOf("cd"); // 2
s.indexOf("12"); // -1
lastIndexOf #
int lastIndexOf(char ch)int lastIndexOf(char ch, unsigned int fromIndex)int lastIndexOf(const String &str)int lastIndexOf(const String &str, unsigned int fromIndex)
Вернёт позицию символа или подстроки в строке, поиск с конца строки. Вернёт
-1, если символ или подстрока не найдены:
String s("abcdacd");
s.lastIndexOf('a'); // 4
s.lastIndexOf("cd"); // 5
Изменение #
setCharAt #
void setCharAt(unsigned int index, char c)
Установить символ под индексом
index в значение c:
String s("abc");
s.setCharAt(1, '3');
// s == "a3c"
concat #
bool concat(const String &str)bool concat(const char *cstr)bool concat(char c)bool concat(unsigned char c)bool concat(int num)bool concat(unsigned int num)bool concat(long num)bool concat(unsigned long num)bool concat(float num)bool concat(double num)bool concat(const __FlashStringHelper * str)
Прибавить к строке
String s;
s.concat(123); // == "123"
s.concat("test"); // == "123test"
replace #
void replace(char find, char replace)void replace(const String& find, const String& replace)
Заменить все символы или подстроки
find на символ или строку replace:
String s("abc123abc");
s.replace("abc", "ABC");
// s == "ABC123ABC"
remove #
void remove(unsigned int index)void remove(unsigned int index, unsigned int count)
Удалить часть строки с индекса
index до конца или в количестве count:
String s("abc123abc");
s.remove(3, 3);
// s == "abcabc"
trim #
void trim()
Удалить с начала и конца строки пробельные символы (
isspace()): пробел, \f, \n, \r, \t, \v:
String s = " abc\r\n";
s.trim();
// s == "abc"
toLowerCase #
void toLowerCase()
Преобразовать все символы в нижний регистр
toUpperCase #
void toUpperCase()
Преобразовать все символы в верхний регистр
Экспорт #
substring #
String substring(unsigned int beginIndex)String substring(unsigned int beginIndex, unsigned int endIndex)
Обрезать строку с индекса
beginIndex до конца или endIndex (не включая). Вернёт новую строку:
String s("abc123def");
String sub = s.substring(3, 6);
// sub == "123"
toInt #
void toInt()
Конвертировать строку в целое число. Пропускает пробельные символы в начале строки, останавливается при достижении отличного от числа символа. Вернёт
0, если строка не содержит число:
String s = " 123a";
s.toInt(); // == 123
toFloat, toDouble #
void toFloat()void toDouble()
Конвертировать строку в число с плавающей точкой. Пропускает пробельные символы в начале строки, останавливается при достижении отличного от числа символа. Вернёт
0, если строка не содержит число:
String s = " 123.456a";
s.toFloat(); // == 123.456
Операторы #
Доступ #
char& operator [] (unsigned int index)
Доступ к символу по индексу для чтения и записи:
String s("abc");
s[0]; // == 'a'
s[1] = '5';
// s == "a5c"
Присвоение #
String & operator = (const String &rhs)String & operator = (const char *cstr)String & operator = (const __FlashStringHelper *str)
Присвоить к строке другую строку в любом формате
String s;
s = "abc"; // s == "abc"
s = F("def"); // s == "def"
Прибавление #
String & operator += (const String &rhs)String & operator += (const char *cstr)String & operator += (char c)String & operator += (unsigned char num)String & operator += (int num)String & operator += (unsigned int num)String & operator += (long num)String & operator += (unsigned long num)String & operator += (float num)String & operator += (double num)String & operator += (const __FlashStringHelper *str)
Прибавить к строке
String s;
s += "abc"; // s == "abc"
s += F("def"); // s == "abcdef"
Сравнение #
bool operator == (const String &rhs)bool operator == (const char *cstr)bool operator != (const String &rhs)bool operator != (const char *cstr)bool operator < (const String &rhs)bool operator > (const String &rhs)bool operator <= (const String &rhs)bool operator >= (const String &rhs)
Сравнить строки
String s("abc");
s == "abc"; // true
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками