Морзе - это аналог префиксного кода. В роли префикса выступает пробел или пауза в случае прослушивания эфира.
Никаких трудностей тут быть не должно.
+=
делайте к строке или в stringstream выводите а не в wcout. Вот там где я в примере комментарий написал, вот там вам надо выделить код морзе одного символа (можно через метод wstring::substr
), а потом это в переменной типа map заполненной кодами, поискать. wstring::size_type processed = 0;
while (processed < s.size()) {
if (s[processed] == L' ') {
wcout << L' ';
processed += 2;
continue;
}
auto space_pos = processed;
while (space_pos < s.size() && s[space_pos] != L' ') ++space_pos;
// processed .. space_pos-1 - текущее слово. Переведите в символ и выведите его.
// обработали до символа на позиции space_pos. +1 из-за индексации с нуля.
processed = space_pos + 1;
}
Ну и аккуратно смотрите, если первый необработанный - пробел, то это пробел между словами - его как есть и выводите, сдвигая индекс необработанного символа на 1.
return L"Ошибка! Символ не найден в базе";
<<
?