So the compiler tells me this is a deprecated conversion from a string-literal to char*:
char* myString = \"i like declaring strings like this\";
It shouldn't even compile. If you need to pass it to function that you are sure won't change the string you need to use const cast, its one of its correct uses:
functionName(const_cast<char *>("something"));
Or if you don't want the const cast, you can copy the string to the stack:
char str[] = "something";
functionName(str);
Yes, You should be worried about it!
You should be declaring it as:
const char* myString = "i like declaring strings like this";
mystring
is an pointer to the string literal "i like declaring strings like this"
, and the string literal resides in an memory space(Implementation Defined) which should not be modified by your program.
Modifying a string literal results in Undefined behavior.
Hence, C++03 Standard deprecated declaring string literals without the keyword const
, This ensures that the string literal cannot be modified through the pointer.
Answer to your Question Edit, is already posted by @Benjamin in comments, simply quoting his answer:
Use an array:
char myString[] = "i like declaring strings like this";
That copies the literal into the array, and the copy can be modified