Skip to main content
Arduino

Return to Revisions

4 of 4
replaced http://arduino.stackexchange.com/ with https://arduino.stackexchange.com/

Is it better to use c_str or toCharArray?

When reading/trying a recent answer, I was surprised to see that Arduino's String class supports the c_str() method, just like the C++ std::string class. As expected, it appears to get a pointer to the string's contents as a null-terminated char array (i.e. C-style string).

However, (as far as I can see) that method is not mentioned in the official Arduino documentation. Additionally, in all example code I've seen using String, a different approach seems to be used. A secondary char buffer is setup, and then the contents of the string are copied to it using String::toCharArray(). This obviously requires double the memory, plus an O(n) copy operation.

It seems like c_str() should be the preferred approach. Is there some reason why toCharArray() is more commonly used?

Peter Bloomfield
  • 11k
  • 9
  • 48
  • 87
lang-cpp

AltStyle によって変換されたページ (->オリジナル) /