Arduino convert string to character array

Basically String type variable in arduino is character array, Conversion of string to character array can be done using simple toCharArray() function. Getting string value in character array is useful when you want to break single string into parts or get part of string.

Generally, strings are terminated with a null character (ASCII code 0). This allows functions (like Serial.print()) to tell where the end of a string is. Otherwise, they would continue reading subsequent bytes of memory that aren’t actually part of the string.

This means that your string needs to have space for one more character than the text you want it to contain. That is why Str2 and Str5 need to be eight characters, even though “arduino” is only seven – the last position is automatically filled with a null character. Str4 will be automatically sized to eight characters, one for the extra null. In Str3, we’ve explicitly included the null character (written ‘\0’) ourselves.

toCharArray(buf, len);

Copies the string’s characters to the supplied buffer.


myString.toCharArray(buf, len)


myString: a variable of type String

buf: the buffer to copy the characters into (char [])

len: the size of the buffer (unsigned int)

Example Code for Converting String to Char Array:

// Define 
String str = "This is my string"; 

// Length (with one extra character for the null terminator)
int str_len = str.length() + 1; 

// Prepare the character array (the buffer) 
char char_array[str_len];

// Copy it over 
str.toCharArray(char_array, str_len);

What I use ?

As I mention in first line Arduino String variable is char array. You can directly operate on string like a char array.


String abc="ABCDEFG";
Serial.print(abc[2]); //Prints 'C'

More Useful on Arduino String

Strings are really arrays of type “char” (usually). For example:

char myString [10] = "HELLO";

There is no separate “length” field, so many C functions expect the string to be “null-terminated” like this:
Arduino convert string to char array
The overall string size is 10 bytes, however you can really only store 9 bytes because you need to allow for the string terminator (the 0x00 byte). The “active” length can be established by a call to the strlen function. For example:

Serial.println ( strlen (myString) );   // prints: 5

The total length can be established by using the sizeof operator. For example:

Serial.println ( sizeof (myString) );   // prints: 10

You can concatenate entire strings by using strcat (string catenate). For example:

strcat (myString, "WORLD");

Note that in this particular example, the 10-character string cannot hold HELLOWORLD plus the trailing 0x00 byte, so that would cause a program crash, or undefined behaviour, of some sort. For this reason you must keep careful track of how many bytes are in C-style strings, particularly if you are adding to their length.

Note that if you use the STL string class, you can use the length function to find the current string length, and the capacity function to find the currently allocated size. For example:

 std::string myString = "HELLO";
  myString.reserve (50);                 // reserve 50 characters
  Serial.println (myString.length ());   // prints: 5
  Serial.println (myString.capacity ()); // prints: 50

Main Difference between char array and String is we define length to char array, string are dynamic and null terminated to identify its end.

Leave a Reply