I’m trying to work on a string comparison check for an introductory C++ course; it’s an online course and unfortunately the instructor is not very responsive. For a current lab, I need to perform a number of manipulations on string data.
Currently, I’m working on a step to check if a string has any repeated characters, and if a repetition is found, to delete the repeated characters at their present spot and move one copy of the letter to the beginning of the string. This is only to be done for the first double to be found.
I’ve set up a basic counter to move through the string looking for matches, checking a stored character (updated on each iteration) to the current position in the string.
I tried multiple string functions (comparing the current inputString[i] to the previous such, stored as a second string tempStore), but those always gave char conversion errors. I’ve tried the below instead, but this is now giving an error: “invalid conversion from ‘char’ to ‘const char*‘.
inputString is given by the user, testA and testB are defined as type char
Any ideas?
while (opComplete == false) {
if (i == 0) {
i++;
}
else if (i == inputString.size()) {
//Not Found
opComplete = true;
}
else if (i > 0) {
testA = inputString[i-1];
testB = inputString[i];
if (strcmp(testA,testB) != 0) {
i++;
}
else {
inputString.insert(0,inputString[i]);
inputString.erase(i,1);
inputString.erase(i-1,1);
opComplete = true;
}
}
}
Your problem is in this line:
The
std::string.insert()function the way you call it here has the following signature:so it expects a
const charpointer. You, however, are giving it theinputString[i]. The return value ofstd::string.operator[]is a reference (as here), hence the error. However, by the time you reach yourelse, you already have the desired character in yourtestBvariable, so you can just change the line toYou also can’t pass normal
chars intostrcmp. You can useoperator==, or, in your case,operator!=though.