1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
void str_to_upper(string &s);
void reverse(string &s);
void reverse(string &s);
void replace(string &s, char x, char y);
void sreplace(string &s, string sub_replaced, string sub_with);
int main()
{
string s;
cout << "Welcome to editor. Please enter your first sentence or *quit* to end." << endl;
getline(cin, s);
while(s != "quit"){
cout << "Please choose an editing operation:"
<< "\nH to replace all characters x with characters y"
<< "\nR to reverse the sentence"
<< "\nU to change the sentence to upper case."
<< "\nS to replace substring s1 with s2." << endl;
char inp;
cin >> inp;
cin.ignore();
int counter = 1;
while(inp != 'H' && inp != 'R' && inp != 'U' && inp != 'S'){
if(counter >= 3)
{
return 0;
}//if
cout << "Please use H, R, U, or S to specify the editing choice. Please try again." << endl;
counter++;
cin >> inp;
cin.ignore();
}//while
switch(inp)
{
case 'H':
{
cout << "Please enter the first character:" << endl ;
char x, y;
cin >> x;
cout << "Please enter the second character:" << endl;
cin >> y;
cin.ignore();
replace(s, x, y);
cout << s << endl;
}
break;
case 'R':
{
//print the string in the reverse order
reverse(s);
cout << s << endl;
}
break;
case 'U':
{
//change string to upper case and print it
str_to_upper(s);
cout << s << endl;
}
break;
case 'S':
{
cout << "PLease enter the first substring:" <<endl;
string s1 = sub_replaced;
string s2 = sub_with;
string a_s1;
string b_s1;
cin >> sub_replaced;
cout << "Please enter the second substring:" <<endl;
cin >> sub_with;
cin.ignore();
find(string s, string s1);
sreplace(string s, sub_replaced, sub_with);
cout << s << endl;
}
break;
}//End of Switch
cout << "Please enter next sentence or *quit* to end." << endl;
getline(cin, s);
}//while
return 0;
}
void str_to_upper(string &s){
for(int i = 0; i < s.length(); i++){
s[i] = toupper(s[i]);
}//for
}//str_to_upper()
void replace(string &s, char x, char y){
for(int i = 0; i < s.length(); i++){
if(s[i] == x)
s[i] = y;
}//for
}//replace()
void reverse(string &s){
for( int i=0, j=s.length()-1; i < j; i++, j--){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}//reverse()
void find(string s, string s1){
for(int i = 0; i <= s.length() - s1.length(); i++)
{
string s1 = s.substr(i, s1.length());
if(s1 == s2)
{
b_s1 = s.length() - a_s1.length() - s1.length();
a_s1 = s.length() - b_s1.length() - s1.length();
s = b_s1 + s2 + a_s1;
i = i + s2.length()-1;
}
}
}//find()
void sreplace(string &s, string &sub_replaced, string &sub_with)
{
for(int i = 0; i <= s.length(); i++)
{
s1 = s2;
}
|