Транслитерация текста на русском языке: замена символов в английскую транслитерацию из файла
Считать текст из файла. Текст на русском языке. Провести замену всех символов текста в английской транслитерации. программа вроде работает но между буквой есть еще лишей буквы. Помогите пожалуйста!
#include <iostream>
#include <fstream>
#include <map>
#include <cctype> // For std::isalpha
using namespace std;
int main() {
setlocale(LC_ALL, "rus");
// std::cout << "Привет";
ifstream inputFile("test.txt");
if (!inputFile.is_open()) {
cerr << "Unable to open input file." << endl;
return 1;
}
// Маппинг для транслитерации русских символов в английскую транслитерацию
map<char, string> translitMap = {
{'а', "a"}, {'б', "b"}, {'в', "v"}, {'г', "g"}, {'д', "d"},
{'е', "e"}, {'ё', "yo"}, {'ж', "zh"}, {'з', "z"}, {'и', "i"},
{'й', "y"}, {'к', "k"}, {'л', "l"}, {'м', "m"}, {'н', "n"},
{'о', "o"}, {'п', "p"}, {'р', "r"}, {'с', "s"}, {'т', "t"},
{'у', "u"}, {'ф', "f"}, {'х', "kh"}, {'ц', "ts"}, {'ч', "ch"},
{'ш', "sh"}, {'щ', "sch"}, {'ъ', ""}, {'ы', "y"}, {'ь', ""},
{'э', "e"}, {'ю', "yu"}, {'я', "ya"},
{'А', "A"}, {'Б', "B"}, {'В', "V"}, {'Г', "G"}, {'Д', "D"},
{'Е', "E"}, {'Ё', "YO"}, {'Ж', "ZH"}, {'З', "Z"}, {'И', "I"},
{'Й', "Y"}, {'К', "K"}, {'Л', "L"}, {'М', "M"}, {'Н', "N"},
{'О', "O"}, {'П', "P"}, {'Р', "R"}, {'С', "S"}, {'Т', "T"},
{'У', "U"}, {'Ф', "F"}, {'Х', "KH"}, {'Ц', "TS"}, {'Ч', "CH"},
{'Ш', "SH"}, {'Щ', "SCH"}, {'Ъ', ""}, {'Ы', "Y"}, {'Ь', ""},
{'Э', "E"}, {'Ю', "YU"}, {'Я', "YA"}
};
char ch;
while (inputFile.get(ch)) {
// Если символ русский, то проводим транслитерацию
if (translitMap.find(ch) != translitMap.end() || isalpha(ch)) {
cout << translitMap[ch];
} else {
// Если не русский и не буква, оставляем как есть
cout << ch;
}
}
inputFile.close();
cout << "\nTransliteration complete." << endl;
return 0;
}