Hi experts,
I am fairly new in the C++ world and I am trying to manipulate a string. This is for a class. I have to read text one character at a time (not suppose to use arrays yet) then swap every other character. Example if user typed in "mouse" the output would be "omsue." Thank you for your help.
string manipulation
RE:string manipulation
<pre>
//by [email protected]
#include <iostream>
#include <string>
using std::cout;
using std::string;
public class EveryOtherCharInAStringSwapper{
public:
string swapEveryOtherChar(String str){
string ret;
ret.resize(str.size());
for(int i=0;i<str.size()-1;i+=2){
ret[i] = str[i+1];
ret[i+1] = str[i];
}
if(i == str.size()-1){
ret[i] = str[i];
}
return ret;
}
}
</pre>
//by [email protected]
#include <iostream>
#include <string>
using std::cout;
using std::string;
public class EveryOtherCharInAStringSwapper{
public:
string swapEveryOtherChar(String str){
string ret;
ret.resize(str.size());
for(int i=0;i<str.size()-1;i+=2){
ret[i] = str[i+1];
ret[i+1] = str[i];
}
if(i == str.size()-1){
ret[i] = str[i];
}
return ret;
}
}
</pre>
RE:string manipulation
I am kind of confused by your source code:
this is what I have so far:
#include <iostream.h>
#include <cctype>
void main()
{
char *name;
const int MAX = 99;
char input[MAX+1];
cin.getline(input, MAX);
char string;
name = input;
//prompting user to enter word
cout << "Please enter the word to be manipulated: " << endl;
cin >> name;
//switching any uppercase to lowercase
for(int x =0; x < MAX; x++)
name[x] = tolower(name[x]);
//switching the word backwards
cout << "The word backwards is: ";
for(int x = strlen(name) -1; x >=0; x--)
cout << *(name + x) << endl;
//trying to swap every other character
cout <<"After swapping every other character the word is: ";
for(int x = 0; x < strlen(name) +1; x += 2)
cout << *(name + x) << endl;
-------------------------------------------------------------------------------
The problem I am having is that the output of "After swapping every other character the word is." lets say the user entered the word mouse.....the output then is mue. As you can see I do understand how to read every other character but I don't undersand how to swap it. So then the output is omsue not just mue. If you can help I would appreciate it.
this is what I have so far:
#include <iostream.h>
#include <cctype>
void main()
{
char *name;
const int MAX = 99;
char input[MAX+1];
cin.getline(input, MAX);
char string;
name = input;
//prompting user to enter word
cout << "Please enter the word to be manipulated: " << endl;
cin >> name;
//switching any uppercase to lowercase
for(int x =0; x < MAX; x++)
name[x] = tolower(name[x]);
//switching the word backwards
cout << "The word backwards is: ";
for(int x = strlen(name) -1; x >=0; x--)
cout << *(name + x) << endl;
//trying to swap every other character
cout <<"After swapping every other character the word is: ";
for(int x = 0; x < strlen(name) +1; x += 2)
cout << *(name + x) << endl;
-------------------------------------------------------------------------------
The problem I am having is that the output of "After swapping every other character the word is." lets say the user entered the word mouse.....the output then is mue. As you can see I do understand how to read every other character but I don't undersand how to swap it. So then the output is omsue not just mue. If you can help I would appreciate it.
RE:string manipulation
Never mind little_endian I figured it out.
My code is now this and it works fine.
#include <cstring>
#include <iostream.h>
#include <cctype> //for tolower
int main()
{
const int MAX = 99;
char input[MAX+1];
char string;
//Prompt the user to enter the word
cout << "Please enter the word to be manipulated: " << endl;
cin.getline(input, MAX);
//Turn all uppercase into lowercase
for(int x = 0; x < MAX; ++x)
input[x] = tolower(input[x]);
//Switching word backwards
cout << "The word you entered spelled backward is: ";
for(int x = strlen(input) - 1; x >= 0; --x)
cout << input[x];
cout << endl;
//Swapping every other character
const int length = (strlen(input) / 2) * 3;
cout << “After swapping every other character the word is: “;
for(int x = 0; x < length; x += 2)
cout << input[x+1] << input[x];
cout << endl;
}
---------------------------------------------------------------------
I do want to thank-you for your help
My code is now this and it works fine.
#include <cstring>
#include <iostream.h>
#include <cctype> //for tolower
int main()
{
const int MAX = 99;
char input[MAX+1];
char string;
//Prompt the user to enter the word
cout << "Please enter the word to be manipulated: " << endl;
cin.getline(input, MAX);
//Turn all uppercase into lowercase
for(int x = 0; x < MAX; ++x)
input[x] = tolower(input[x]);
//Switching word backwards
cout << "The word you entered spelled backward is: ";
for(int x = strlen(input) - 1; x >= 0; --x)
cout << input[x];
cout << endl;
//Swapping every other character
const int length = (strlen(input) / 2) * 3;
cout << “After swapping every other character the word is: “;
for(int x = 0; x < length; x += 2)
cout << input[x+1] << input[x];
cout << endl;
}
---------------------------------------------------------------------
I do want to thank-you for your help