Как умножить строки?
Я хочу иметь такую строку
Serial.println(count*"B");
Поэтому, если count=6
, будет напечатано BBBBBB
и т. д.
Есть ли что-нибудь подобное для arduino?
@Mirror318, 👍6
Обсуждение3 ответа
Лучший ответ:
Может быть и более простой "нубский" способ:
int count = 6
for(int i=0; i<count; i++)
{
Serial.print("b");
}
Serial.println();
Это то, что я в итоге сделал (хотя сделал цикл for одной строкой). На самом деле я не собирался создавать свой собственный метод, как это сделали другие, я просто надеялся, что будет какой-то синтаксис string * int
, @Mirror318
Для этого можно написать вспомогательную функцию, например:
void printRepeat (Stream & device, const char * str, unsigned int count)
{
while (count-- > 0)
device.print (str);
} // конец printRepeat
void setup()
{
Serial.begin (115200);
printRepeat (Serial, "-", 20);
Serial.println ();
} // конец настройки
void loop()
{
printRepeat (Serial, "Hello, World! ", 5);
Serial.println ();
delay (500);
} // конец цикла
Функции printRepeat
передается аргумент Stream
, который может быть чем-то вроде Serial, Serial1, экземпляр SoftwareSerial и т. д.
Для интереса вот переформулированная версия ответа Ника Гэммона. немного магии C++:
// "Повторяющаяся строка", от которой нет никакой пользы, кроме как для печати.
class RepeatedString : public Printable
{
public:
RepeatedString(const char * str, unsigned int count)
: _str(str), _count(count) {}
size_t printTo(Print& p) const
{
size_t sz = 0;
for (unsigned int i = 0; i < _count; i++)
sz += p.print(_str);
return sz;
}
private:
const char * _str;
unsigned int _count;
};
void setup()
{
Serial.begin(115200);
Serial.println(RepeatedString("-", 20));
}
void loop()
{
Serial.println(RepeatedString("Hello, World! ", 5));
delay(500);
}
Вы можете использовать .print()
и .println()
RepeatedString
на чем угодно
который может печатать.
Хороший! Вы также можете перегрузить «*», чтобы работал точный синтаксис OP!, @xyz
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- форматирование строк в Arduino для вывода
- Очень простая операция Arduino Uno Serial.readString()
- DateTime в строку
- Как преобразовать строку в массив байтов
- Как отправить строку на мастер с помощью i2c
- Создание форматированной строки (включая числа с плавающей запятой) в Arduino-совместимом C++
Нет ничего более эффективного, чем цикл., @Ignacio Vazquez-Abrams
Цикл, который печатает char за char, или цикл, который создает строку и печатается в конце цикла?, @Mirror318
Это будет зависеть от того, имеет ли
count
разумный предел., @Ignacio Vazquez-AbramsFor(let str = 'a'; str.length<6; str+='a'){ Console.log(str) }, @Jackie