String - динамическая строка
Конструктор #
Строки и символы #
String(const char *cstr = "")
String(const String &str)
String(const __FlashStringHelper *str)
String(char c)
Создаёт
String
и копирует в неё строку
String s1("string");
String s2(s1);
String s3(F("fstring"));
String s4('a');
Целые числа #
String(unsigned char, unsigned char base = 10)
String(int, unsigned char base = 10)
String(unsigned int, unsigned char base = 10)
String(long, unsigned char base = 10)
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()
Вернёт указатель на начало строки
end #
const char* end()
Вернёт указатель на конец строки
String s;
s.concat(123); // == "123"
s.concat("test"); // == "123test"
Сравнение #
compareTo #
int compareTo(const String &s)
Вернёт
0
, если строки равны, аналог strcmp
equals #
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)
Прибавить к строке
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