Appreciate the views/advice so far!
So now we have:
size_t length(const char* cp) {
return strlen(cp);
}
size_t length(String &s) {
return s.length();
}
size_t length(const __FlashStringHelper *ifsh) {
return strlen_P(reinterpret_cast<PGM_P>(ifsh));
}
size_t length(const int& i) {
char buffer[17];
return sprintf(buffer, "%d", i);
}
size_t length(const float& f, uint8_t dec = 2) {
char buffer[17] = {'\n'};
return strlen(dtostrf(f, 0, dec, buffer));
}
size_t length(const double& d, uint8_t dec = 2) {
char buffer[17] = {'\n'};
return strlen(dtostrf(d, 0, dec, buffer));
}
void setup() {
Serial.begin(115600);
// String x = "TEN CHARS!";
// char* x = "TEN CHARS!";
// char x[] = "TEN CHARS!";
// Serial.println(length("TEN CHARS!"));
// Serial.println(length(F("TEN CHARS!")));
// int x = 22222;
// int x = -22222;
Serial.println(length(x));
// float x = 49.8765432;
// double x = 49.8765432;
// Defaults to 2 decimal places unless specified such as below
// Serial.println(length(x, 5));
}
void loop() { }
How's that looking?