Как правильно писать и читать кириллицу из файла?

У меня есть следующий код:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int main()
{
    string rus = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦШЩЪЫЬЭЮЯ";
    string lat = "abvgděëžzijklmnoprstufhcčšŝŭeûâABVGDĚËŽZIJKLMNOPRSTUFHCČŠŜŬEÛÂ";
    ifstream gdata("data.txt");
    if(!gdata){
        gdata.open("data.txt");
    }
    string temp;
    while(gdata){gdata >> temp;}
    gdata.close();
    ofstream sdata("data.txt", ios::out | ios::trunc);
    for(unsigned int i = 0; i < temp.length(); i++){
        int index = rus.find(temp[i]);
        if(index == -1){sdata << temp[i];}
            else{sdata << lat[index];}
    }
    sdata.close();
    return 0;
}

Я хотел бы прочитать русскую кириллицу из файла. Затем программа найдет индекс каждого символа в строке rus, а если найдет символ, то найдет соответствующую букву в строке lat. Это письмо будет записано в файл. К сожалению, когда я набираю что-то в файл и затем запускаю программу, я получаю странный вывод, такой как @>A8 со случайными квадратами (здесь по какой-то причине не видно). Как я могу заставить мою программу правильно читать кириллицу? Я уже рассмотрел здесь более 10 вопросов о похожих предметах, но, учитывая, что я очень новичок в C++, не говоря уже о кодировании, я не понял ответов ни в малейшей степени, главным образом, так как не было представлено ни одного примера, который я мог бы понять.

Кроме того, даже если большинство символов латинские и в тексте присутствует только одна кириллица, весь текст искажается случайными буквами, такими как @>A8

0 ответов

Другие вопросы по тегам