Arduino:Примеры/StringAdditionOperator
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Оператор для объединения строк друг с другом [1]
Строки можно присоединять друг к другу самыми разными способами. Эта операция называется конкатенацией, а ее результатом является исходная строка плюс другая строка (или символьный массив), которую вы к ней добавили. Оператор + позволяет объединять строку с другой строкой, со значением переменной, с символом-константой, с массивом из символов-констант или с ASCII-репрезентацией константы.
// Добавление к строке целочисленной константы:
stringThree = stringOne + 123;
// Добавление к строке константы в виде длинного целого:
stringThree = stringOne + 123456789;
// Добавление к строке константы в виде символа:
stringThree = stringOne + 'A';
// Добавление к строке константы в виде строки:
stringThree = stringOne + "abc";
// Объединение двух строк друг с другом:
stringThree = stringOne + stringTwo;
Кроме того оператором + можно пользоваться и для того, чтобы добавить к строке результат какой-нибудь функции, но только в том случае, если функция возвращает данные одного из типов, указанных выше. Например,
stringThree = stringOne + millis();
Этот вариант приемлем, поскольку функция millis() возвращает данные типа «длинное целое». Но можно сделать и так:
stringThree = stringOne + analogRead(A0);
...поскольку функция analogRead() возвращает целочисленные значения. Конкатенация строк может пригодиться, когда вам нужно отобразить комбинацию значений и описания этих значений одной строкой – к примеру, при последовательной передаче данных через Ethernet-соединение, при выводе информации на LCD-экран и т.д.
Внимание! Нужно быть осторожнее при объединении в одну строку разных типов данных, т.к. это может повлечь непредвиденные результаты. К примеру, результатом этого фрагмента кода:
int sensorValue = analogRead(A0);
String stringOne = "Sensor value: ";
String stringThree = stringOne + sensorValue;
Serial.println(stringThree);
...может быть «Sensor Value: 402» (ну, или какое-нибудь другое число, считанное функцией analogRead()). Однако вот этот код:
int sensorValue = analogRead(A0);
String stringThree = "Sensor value: " + sensorValue;
Serial.println(stringThree);
...даст непредвиденный результат, поскольку строке stringThree не присвоили никакого начального значения перед объединением разных типов данных.
Или вот еще один пример инициализации, которая может повлечь ошибки:
Serial.println("I want " + analogRead(A0) + " donuts");
Эта строка кода не скомпилируется, поскольку компилятор не сможет правильно расставить приоритет операций. С другой стороны, нижеследующий код скомпилируется, но запустится не так, как ожидается:
int sensorValue = analogRead(A0);
String stringThree = "I want " + sensorValue;
Serial.println(stringThree + " donuts");
Он запустится неправильно по той же причине, что и раньше – строкt stringThree не присвоили начального значения перед объединением разных типов данных. Поэтому перед тем как объединять строки, инициализируйте их.
Необходимое оборудование
- Плата Arduino;
Цепь
Для этого примера не нужно строить никакой цепи, хотя Arduino должна быть через USB подключена к компьютеру.
Код
Вот рабочий пример разных типов конкатенации.
/*
Добавление строк друг к другу
Несколько примеров объединения строк.
Вы также можете попробовать добавлять к строке разные типы данных,
как показано по ссылке ниже:
http://arduino.cc/en/Tutorial/StringAdditionOperator
Создан 27 июля 2010,
модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
Этот код не защищен авторским правом.
*/
// Объявляем три строки:
String stringOne, stringTwo, stringThree;
void setup() {
// Инициализируем последовательную передачу данных
// и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Leonardo)
}
stringOne = String("stringThree = ");
stringTwo = String("this string");
stringThree = String ();
// Отправляем вводную часть:
Serial.println("\n\nAdding strings together (concatenation):");
Serial.println();
}
void loop() {
// Добавляем к строке целочисленную константу:
stringThree = stringOne + 123;
Serial.println(stringThree); // выводим "stringThree = 123"
// Добавляем к строке константу в виде длинного целого:
stringThree = stringOne + 123456789;
Serial.println(stringThree); // выводим "You added 123456789"
// Добавляем к строке константу в виде символа:
stringThree = stringOne + 'A';
Serial.println(stringThree); // выводим "You added A"
// Добавляем к строке константу в виде строки:
stringThree = stringOne + "abc";
Serial.println(stringThree); // выводим "You added abc"
stringThree = stringOne + stringTwo;
Serial.println(stringThree); // выводим "You added this string"
// Добавляем к строке целочисленную переменную:
int sensorValue = analogRead(A0);
stringOne = "Sensor value: ";
stringThree = stringOne + sensorValue;
Serial.println(stringThree); // выводим "Sensor Value: 401" либо вместо «402» какое-то другое значение, считанное функцией analogRead(A0)
// Добавляем к строке переменную в виде длинного целого:
long currentTime = millis();
stringOne="millis() value: ";
stringThree = stringOne + millis();
Serial.println(stringThree); // выводим "The millis: 345345" либо вместо «345345» какое-то другое значение от currentTime
// пока условие верно, ничего не делаем:
while(true);
}
См.также
- String object
- StringConstructors
- StringAdditionOperator
- StringIndexOf
- StringAppendOperator
- StringLengthTrim
- StringCaseChanges
- StringReplace
- StringCharacters
- StringStartsWithEndsWith
- StringComparisonOperators
- StringSubstring
Внешние ссылки
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino