Я пытаюсь перевести кириллический символ из файла на латинский символ в C ++.
Я могу перевести строку в кириллице, если эта строка уже есть в моем коде.Но если я хочу взять его из файла, он не работает.
static const std::array<std::string, 33> latUp = {"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Shch", "\"", "Y", "'", "E""Yu", "Ya"};
static const std::array<std::string, 33> latLow = {"a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "shch", "\"", "y", "'", "e", "yu", "ya"};
static const std::string rusUpU8 = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
static const std::string rusLowU8 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
setlocale(LC_ALL, "Russian");
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
std::string toConvertU8 = "Порошенко, Порошенко";
std::string convertU8 = "";
std::wstring rusLowU16 = utf8_to_utf16(rusLowU8);
std::wstring rusUpU16 = utf8_to_utf16(rusUpU8);
std::wstring toConvertU16 = utf8_to_utf16(toConvertU8);
std::wcout << L"Low: " << rusLowU16 << std::endl;
std::wcout << L"Up: " << rusUpU16 << std::endl;
std::wcout << L"ToConvert: " << toConvertU16 << std::endl;
for (auto &c : toConvertU16) {
std::size_t posLow = rusLowU16.find(c);
if (posLow != std::wstring::npos) {
convertU8 = convertU8 + latLow[posLow];
} else {
std::size_t posUp = rusUpU16.find(c);
if (posUp != std::wstring::npos) {
convertU8 = convertU8 + latUp[posUp];
} else {
convertU8 = convertU8 + static_cast<char>(c);
}
}
}
std::cout << "Convert: " << convertU8 << std::endl;
Поэтому, чтобы прочитать строку в моем файле, я пытаюсь использовать ifstream и wifstream, но когда я хочу отобразить его, он не работает, строкане правильно получить.
Кто-то уже прочитал кириллицу из файла без потери данных?
Танки.