'C++: insert char to a string
so I am trying to insert the character, which i got from a string, to another string. Here I my actions: 1. I want to use simple:
someString.insert(somePosition, myChar);
2. I got an error, because insert requires(in my case) char* or string
3. I am converting char to char* via stringstream:
stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);
4. Everything seems to be compiling successfully, but program crashes the gets to
conversion >> myCharInsert;
line.
5.I am trying to replace char* with string:
stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);
Everything seems to be OK, but when someAnotherString.at(someOtherPosition) becomes space, program crashes.
So how do I correctly do this?
Solution 1:[1]
Simplest is to provide yourself with a function that turns a character into a string. There are lots of ways of doing this, such as
string ToStr( char c ) {
return string( 1, c );
}
Then you can simply say:
someString.insert(somePosition, ToStr(myChar) );
and use the function in other cases where you want a string but have a char.
Solution 2:[2]
- Everything seems to be compiling successfully, but program crashes the gets to
conversion >> myCharInsert;
The problem is that you are trying to dereference(access) myCharInsert(declared as a char* ) which is pointing to a random location in memory(which might not be inside the user's address space) and doing so is Undefined Behavior (crash on most implementations).
EDIT
To insert a char into a string use string& insert ( size_t pos1, size_t n, char c ); overload.
Extra
To convert char into a std::string read this answer
Solution 3:[3]
You can try:
std::string someString{"abc"};
someString.push_back('d');
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Community |
| Solution 3 | ouflak |
