Как правильно писать и читать кириллицу из файла?
У меня есть следующий код:
#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