Один мой знакомый
replace(strOut.begin(), strOut.end(), pos->first, pos->second);
replace(strOut.begin(), strOut.end(), pos->first, pos->second);
прислал как то мне такой на первый взгляд бредовый текст:
94НН03 С006Щ3НN3 П0К4ЗЫ8437,
К4КN3 У9N8N73ЛЬНЫ3 83ЩN М0Ж37 93Л47Ь Н4Ш Р4ЗУМ! 8П3Ч47ЛЯЮЩN3 83ЩN! СН4Ч4Л4 Э70 6ЫЛ0 7РУ9Н0, Н0 С3ЙЧ4С Н4 Э70Й С7Р0К3 84Ш Р4ЗУМ ЧN7437
Э70 4870М47NЧ3СКN, Н3 З49УМЫ84ЯСЬ 06 Э70М. Г0Р9NСЬ. ЛNШЬ
0ПР393Л3ННЫ3 ЛЮ9N М0ГУ7 ПР0ЧN747Ь Э70.
К4КN3 У9N8N73ЛЬНЫ3 83ЩN М0Ж37 93Л47Ь Н4Ш Р4ЗУМ! 8П3Ч47ЛЯЮЩN3 83ЩN! СН4Ч4Л4 Э70 6ЫЛ0 7РУ9Н0, Н0 С3ЙЧ4С Н4 Э70Й С7Р0К3 84Ш Р4ЗУМ ЧN7437
Э70 4870М47NЧ3СКN, Н3 З49УМЫ84ЯСЬ 06 Э70М. Г0Р9NСЬ. ЛNШЬ
0ПР393Л3ННЫ3 ЛЮ9N М0ГУ7 ПР0ЧN747Ь Э70.
Прочитав (точнее пробежав глазами) до конца эти крякозяблики, недолго
мучаясь, я облегчил себе задачу чтения и перевода в этот «цифрусский»
текст кодом на C++:
#include "stdafx.h"//для VC++
мучаясь, я облегчил себе задачу чтения и перевода в этот «цифрусский»
текст кодом на C++:
#include "stdafx.h"//для VC++
#include <iostream>
#include <fstream>
#include <map>
#include <algorithm>
#include <string>
using namespace std;
int main ( int argc, char *argv[] )
{
/*SignText for Russian words
(C) O. Halzov
2011-09-27
2011-09-27
Конвертация между русским текстом и «знакорусским» :)
Русский текст=РУССКNЙ 73КC7
Для тренировки мозга и шутки ради.
Пример:
Читаем текст из файла и конвертируем его в
числотекст на экран:
числотекст на экран:
SignText.exe E erussian.txt
Читаем числотекст из файла и конвертируем
его в русский текст на экран:
его в русский текст на экран:
SignText.exe D drussian.txt*/
setlocale(0,"");//Дабы VC++ понял русский, а мы поняли его.
if (argc<=2){
cout<<"Please input 2 parameters: [E|D] - encode|decode
text and ['filename']!"<<endl;
text and ['filename']!"<<endl;
cout<<"Получишь не АБВГД, а 468Г9 :)"<<endl;
return 0;
}
std::map <char, char>
dec_list;//decode list
dec_list;//decode list
std::map <char, char>
enc_list;//encode list
enc_list;//encode list
string
strOut;
strOut;
string strIn;
//Списки замены,наверняка можно обойтись одним, но пока некогда копать:
dec_list['4'] = 'А'; dec_list['7'] = 'Т'; dec_list['N'] = 'И'; dec_list['8'] = 'В';
dec_list['9'] = 'Д'; dec_list['6'] = 'Б'; dec_list['3'] = 'Е'; dec_list['0'] = 'О';
enc_list['А'] = '4'; enc_list['Т'] = '7'; enc_list['И'] = 'N'; enc_list['В'] = '8';
enc_list['Д'] = '9'; enc_list['Б'] = '6'; enc_list['Е'] = '3'; enc_list['О'] = '0';
ifstream b_file
(argv[2]);
(argv[2]);
while (!b_file.eof() ) {
b_file>>
strIn;
strIn;
if (strOut.length()>0)
{
strOut=strOut
+ ' ' + strIn;
+ ' ' + strIn;
}
else
{
strOut=strIn;
}
}
b_file.close();
map<char, char>::iterator
pos;
pos;
using
std::replace;
std::replace;
//Работаем только с верхним регистром для улучшения читабельности:
transform(strOut.begin(),
strOut.end(),strOut.begin(), ::toupper);
strOut.end(),strOut.begin(), ::toupper);
if (*argv[1] == 'E'){
for (pos=enc_list.begin();
pos!=enc_list.end();++pos){
pos!=enc_list.end();++pos){
replace(strOut.begin(), strOut.end(), pos->first, pos->second);
}
}
if (*argv[1] == 'D'){
for (pos=dec_list.begin();
pos!=dec_list.end();++pos){
pos!=dec_list.end();++pos){
replace(strOut.begin(), strOut.end(), pos->first, pos->second);
}
}
//Результат на экран:
cout<< strOut << endl;
}