So below I have a code in C++ that is supposed to invert the arguments in a vector, but not the sequence. I have listed my problems as sidenotes in the code below. The invert function is supposed to invert each argument, and then the main function just outputs the inverted words in same order
For instance, program(“one two three four”)=ruof eerth owt eno
#include <iostream>
#include <string>
using namespace std;
int invert(string normal)
{
string inverted;
for (int num=normal.size()-1; num>=0; num--)
{
inverted.append(normal[num]); //I don't know how to get each character
//I need another command for append
}
return **inverted**; <----
}
int main(int argc, char* argv[])
{
string text;
for (int a=1; a<argc; a++)
{
text.append(invert(argv[a])); //Can't run the invert function
text.append(" ");
}
cout << text << endl;
return 0;
}
The problem is that
normal[num]is a character.append()doesn’t have an overload for characters.You can use
inverted.push_back(normal[num]);See the string API.
I should add a couple other notes:
0) Why are you returning
intfrominvert()?invertedis a string, so you should return a string:1) Rather than using
numto iterate, you can usereverse_iterators:2) When passing strings to functions that do not get modified in the function, you should pass by reference to avoid extra string copies.
3) You’re traversing
0..argc, so your reversed strings will be backwards from what is expected, if I understand your requirements correctly.