Всем здравствуйте. Я хочу сделать чтобы текст преобразовывался в символы азбуки Морзе.
Написал такой код:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
wstring encrypt(const wstring &s) {
wstringstream result;
setlocale(LC_ALL, "ru");
for (wstring::size_type i = 0; i < s.size(); i++) {
switch (s[i]) {
case L'А':
result << L"•−" << L" ";
break;
case L'Б':
result << L"-" << L" ";
break;
default:
return L"Ошибка! Символ не найден в базе";
}
}
return result.str();
}
// string decrypt() {}
int main() {
setlocale(LC_ALL, "ru");
wstring s;
wcin >> s;
wcout << encrypt(s);
}
Программа компилируется, но такая проблема - я ввожу русскую А, программа то ли ее не распознает, то ли что. Она просто молчит. Но если ввести латинскую букву, то она скажет, что она не знает такой символ. А на любые кириллические буквы - полный молчок от программы.
Еще мне пришлось использовать L'' в case, т.к. русские буквы в UTF-8 занимают два байта, а может содержать только один байт.
А еще, у меня печатает ошибку не русскими буквами, а транслитом:
Oshibka! Simvol ne najden v baze
Помогите мне, пожалуйста, решить эти проблемы