Транслитерация текста на русском языке: замена символов в английскую транслитерацию из файла

Считать текст из файла. Текст на русском языке. Провести замену всех символов текста в английской транслитерации. программа вроде работает но между буквой есть еще лишей буквы. Помогите пожалуйста!

#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;
}

Ответы (0 шт):