spooky_2020
@spooky_2020
А меня Сережа зовут.

Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

Есть код на С++. В коде использую wchar_t, кодировка UTF-8, компилятор gcc version 9.4.0, OS Ubuntu.

---Проблема---
Строки в исходном коде имеют вид: L"Введите сумму современной валюты \n",
но после компиляции, в консоль выводит: Vvedite summu sovremennoj valyuty`
Из за чего это происходит и как от этого избавится?
---
Code
// "Старовалютный преобразователь"
// Преобразовывает старое значение Британской валюты
// в эквивалентную современному курсу сумму.

#include <iostream>
#include <iomanip>
#include <math.h>

bool get_currency(const wchar_t *prompt, const wchar_t *err_message, int &num);


int main()
{
	int pound = 0; 	  // 20 shilling
	int shilling = 0; // 12 penny
	int penny = 0;    // 1 penny
	wchar_t delimiter = L".";

	std::wcout << L"-M-" << L"Введите сумму валюты \n";
	while (!get_currency(L"фунтов:", L"неправильные фунты", pound)) ;
	while (!get_currency(L"шиллингов:", L"неправильные Шиллинги", shilling)) ;
	while (!get_currency(L"пенни:", L"неправильные пенни", penny)) ;

	// --- 5 = 1/100 old pound. --- 2.4 = 1 modern penny
	int modern_penny = shilling * 5 + round(penny / 2.4);
	int modern_pound;
	if (modern_penny >= 100) {
		modern_pound = pound + modern_penny / 100;
		modern_penny = modern_penny % 100;
	} else {
		modern_pound = pound;
	}
	std::wcout 
		<< L"Modern value: " 
		<< L"\u00A3"
		<< modern_pound << delimiter << modern_penny << std::endl;
	return 0;
}

bool get_currency(const wchar_t *prompt, const wchar_t *err_message, int &num) {
	std::wcout.width(15);
	std::wcout.setf(std::ios::left);
	std::wcout << prompt;
	if ((std::wcin >> num).good()) {
		return true;
	}
	std::wcin.clear();
	if (std::wcin.peek() == L'q') {
		std::wcout << L"Выход. Bye." << std::endl;
		exit(0);
	}
	std::wcin.ignore(50, '\n');
	std::wcout << err_message << L" повтори ввод или 'q' для выхода: " << std::endl;
	return false;
}

Под windows (компилятор mingw gcc version 4.x.x) работало как надо.
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 22:44
500 руб./в час
30 апр. 2024, в 21:45
20000 руб./за проект
30 апр. 2024, в 21:36
1500 руб./в час