Шифр Цезаря для кириллицы

321
13 сентября 2017, 13:49

Здравствуйте! Появилась надобность написать программу на С++, шифрующую русские строки, считываемые из файла с кодировкой UTF-8. Использую STL wstring. В случае с обычным вводом с экрана всё работало бы корректно: я просто менял бы номера символов на K единиц и получал бы другие символы. Проблема состоит в том, что при данном коде:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    wfstream f("in.txt", fstream::in);
    wstring tmp;
    f >> tmp;
    wcout << tmp.size() << ": " << tmp << endl;
}

строка оказывается пустой. Появлялась идея считать в обычный string, а затем преобразовать в wstring - функция wstring_convert не определена. Код компилирую на g++ 4.8 в ОС Linux Mint 17.

UPD: хочется добавить, что при таком коде строка f >> tmp выбрасывает исключение:

terminate called after throwing an instance of 'std::ios_base::failure' 
basic_filebuf::underflow invalid byte sequence in file
READ ALSO
Дизассемблирование кода в codeblocks

Дизассемблирование кода в codeblocks

Здравствуйте! Подскажите, пожалуйста, как дизассемблировать код в codeblocks?

387
Длина адреса переменной (указателя)

Длина адреса переменной (указателя)

Неужели short int хватает чтобы записать такой длинный адрес переменной? Насколько мне известно, адреса должны выглядеть примерно так 0x7ffc079b67aeНеужели...

212
Рекурсивная функция С++ Фибоначчи [требует правки]

Рекурсивная функция С++ Фибоначчи [требует правки]

Написать функцию, которая возвращает сумму n чисел ФибоначчиЧисло n принимается в качестве аргумента, нужно без доп

224