如何从文件中正确地书写和阅读西里尔语?

时间:2016-03-21 01:26:25

标签: c++ cyrillic

我有以下代码:

#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 字符串中找到相应的字母。然后将这封信写入文件。 不幸的是,当我在文件中键入内容然后运行程序时,我会得到奇怪的输出,例如带有随机方块的@&gt; A8(由于某种原因在这里不可见)。如何让我的程序正确读取西里尔字母? 我已经在这里看了10个关于类似主题的问题,但是考虑到我是C ++的初学者,没有明确的编码,我一点也不理解答案,主要是因为没有提供我能理解的例子。

此外,即使大多数字符都是拉丁文并且文本中只有一个西里尔字母,整个文本也会变成格式化为随机字母,如@&gt; A8

0 个答案:

没有答案