Ps: This is more of a conceptual question.
I know this makes things more complicated for no good reason, but here is what I’m wondering. If I’m not mistaken, a const char* "like this" in c++ is pointing to l and will be automatically zero terminated on compile time. I believe it is creating a temporary variable const char* to hold it, unless it is keeping track of the offset using a byte variable (I didn’t check the disassembly). My question is, how would you if even possible, add characters to this string without having to call functions or instantiating strings?
Example (This is wrong, just so you can visualize what I meant):
"Like thi" + 's';
The closest thing I came up with was to store it to a const char* with enough spaces and change the other characters.
Example:
char str[9];
strcpy(str, "Like thi")
str[8] = 's';
Clarification:
Down vote: This question does not show any research effort; it is unclear or not useful
Ok, so the question has been highly down voted. There wasn’t much reasoning on which of these my question was lacking on, so I’ll try to improve all of those qualities.
My question was more so I could have a better understanding of what goes on when you simply create a string "like this" without storing the address of that string in a const char* I also wanted to know if it was possible to concatenate/change the content of that string without using functions like strcat() and without using the overloaded operator + from the class string. I’m aware this is not exactly useful for dealing with strings in C++, but I was curious whether or not there was a way besides the standard ways for doing so.
string example = "Like thi" + "s"; //I'm aware of the string class and its member functions
const char* example2 = "Like this"; //I'm also aware of C-type Strings (CString as well)
It is also possible that not having English as my native language made things even worst, I apologize for the confusion.
First, there is nothing
nullterminated, but the zero terminated. All char* strings in C end with'\0'.When you in code do something like this:
compiler will generate a string that has a contents:
and will initialize
namepointer to point at it at a certain time during program execution depending on the variable context (member, static, …).Appending ANYTHING to the
namewon’t work as you expect, since memory pointed to bynameisn’t changeable, and you’ll probably get either access violation error or will overwrite something else.Having
won’t create a copy of the string in question, it will only have
copyOfTheNamepoint to the original string, so havingwill be exactly as
and will only cause problems to you.
Use
std::strcatinstead. And please, do some investigating how the basic string operations work in C.