1

in my code, I was using string class to make an array to store my menu items

String menu[2] = {{"Menu 1"}, {"Menu2"}};

How do I convert this into char arrays and how do I call them?

Example:
Serial.println(menu[0]);
asked Jun 18, 2020 at 16:55
3
  • Sounds like you're looking for menu[0].c_str() Commented Jun 18, 2020 at 16:57
  • 4
    const char* menu[2] = {"Menu 1", "Menu2"}; Commented Jun 18, 2020 at 17:03
  • By the way, you can access a string. You call a function. You don't call a string. Commented Jun 18, 2020 at 17:59

1 Answer 1

2

Create them as char arrays like this:

const char* menu[2] = {"Menu 1", "Menu 2"};

and use them like this:

Serial.println(menu[0]);
answered Jun 18, 2020 at 17:58
4
  • Strictly speaking it's an array of char*, not an array of char. And you should handle "Menu 1" as a const char*, to allow the compiler inhibit you doing nonsense. And avoid warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] Commented Jun 19, 2020 at 14:27
  • Edited for the const. Commented Jun 19, 2020 at 14:57
  • It is an array of char*. And each one of those pointers points to a char array, not a String. My point there was to distinguish between char array and String object. Commented Jun 19, 2020 at 14:59
  • Agreed. Even the warning text calls "hello" a string constant. But string (string literals aka const char array) and Arduino String Objects are so different that we should avoid using the term string completely. Commented Jun 20, 2020 at 11:19

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.