// leet converter v.2 // © Copyright Brandon Weeks 2006 // 9/3/2006 // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include #include using namespace std; // Function Declarations string converter(string); string lowercase(string); int main (int argc, char * const argv[]) { string input; // Variable for the text to be converted string output; // Variable for converted text to be outputted to console string arg[argc]; // Variable where console args in string form bool fileOutput; // Set to true if output to file instead of console string outputFileName; // If file output, this is the output file name for (int i=1;i < argc;i++) // Place the argv's into the string array 'arg' arg[i]=argv[i]; for (int i=1;i < argc;i++) { if (arg[i] == "-o") { // Test if one of the args is "-o" fileOutput=true; // If true, set fileOutput=true outputFileName=arg[i+1]; // Also set the next arg as outputFileName break; // Leave the loop } } if (argc == 1) { bool firstRun=true; cout << "Welcome to BJ's l33t converter, type quit to exit at any time" << endl << "Enter something to be converted to l33t: "; while (input != "quit") { if (firstRun == false) cout << endl << "Enter something else to be converted to leet: "; firstRun=false; getline(cin, input); if (input != "quit") { output=converter(input); cout << output << endl; } } return 0; } else if (arg[1] == "file") { // If we are input from a file vector container; // Vector to hold file contents string buffer; // String buffer to hold the file contents before we put them in the vector if (arg[2].empty()) { // If no input file, tell the user and exit code 1 cout << "No input file!" << endl; return 1; } ifstream inputFile(arg[2].c_str()); // Open the input file if (!inputFile) { // If the file didn't open, warn the user and exit code 1 cout << "An error has occurred opening the file!" << endl; return 1; } while (!inputFile.eof()) { // Loop intil we hit the end of file getline(inputFile,buffer); // Put the curent line into the buffer container.push_back(buffer); // Place the buffer into the vactor } for (unsigned i=0; i < container.size();i++) // Loop till we convert the whole vector container[i]=converter(container[i]); // Run every line thru the converter fuction inputFile.close(); // Close the input file if (fileOutput==true) { // If we are going output to file ofstream outputFile(outputFileName.c_str()); // Open the output file if (!outputFile) { // If we can't open the output file, warn the user and exit code 1 cout << "Error creating the output file!" << endl; return 1; } for (unsigned i=0;i < container.size();i++) { // Place the contents of the vector into the file outputFile << container[i]; outputFile << endl; // Go to next line } outputFile.close(); // Close the output file } else { // If we are not going to output to file, just output to console for (unsigned i=0;i < container.size();i++) cout << container[i] << endl; } } else { // If the user inputs an unknown arg, warn user and exit code 1 cout << "leet: unknown option" << endl; return 1; } } string converter(string foo) { for (unsigned i=0;i < foo.size();i++) foo[i]=tolower(foo[i]); for (unsigned i=0;i < foo.size(); i++) if (foo[i] == 'a' ) foo[i] = '4'; else if (foo[i] == 'b') foo[i] = '8'; else if (foo[i] == 'e') foo[i] = '3'; else if (foo[i] == 'i') foo[i] = '1'; else if (foo[i] == 'l') foo[i] = '1'; else if (foo[i] == 'o') foo[i] = '0'; else if (foo[i] == 's') foo[i] = '5'; else if (foo[i] == 't') foo[i] = '7'; return foo; }