[RESOLVIDO] Acentos na saida de programas em C++ (Utilizando editor Atom + gpp compiler para rodar dentro do atom mesmo)

Título auto explicativo. Gostaria que a saída com acentos não ficasse bugada como na imagem abaixo

Uso windows 10 (Podem me crucificar mas preciso desse sistema FDP por conta da SUPER especificidade do meu outro emprego que não vem ao caso)

Agradeço qualquer ajuda.

L"string aqui"
É umas das coisa que fazem programar C++ no janelas ser um saco.
E não usa using namespace ... é um mal hábito.

1 Curtida

obrigado pela dica sobre o namespace, mas a primeira dica eu não entendi oq devo fazer poderia explicar melhor?

Muito obrigado mesmo

No código, insira o L, assim >

cout << L"Multiplicação" << endl; // Na verdade, dá uma olhada no tutorial, caso isso não funcione, eles explicam de uma outra forma, caso essa não de resultados.

Retirei desse tutorial aqui em um fórum Português :

1 Curtida

Cara não funcionou não HAHAHAHHA que zica

Nem usando essa sequencia aqui ? >

#include < iostream >
#include < locale >

int main()
{
std::locale::global(std::locale(“en_US.utf8”));
std::wcout.imbue(std::locale());
std::wcout << L"Multiplicação" << std::endl;
return 0;
}

Se nem isso funcionar/funcionou, é esperar para ver se o @Fenrir ou alguém mais tem alguma outra dica. =/

a saída é

terminate called after throwing an instance of ‘std::runtime_error’
what(): locale::facet::_S_create_c_locale name not valid

1 Curtida

Vishi, vamos aguardar um pouco, daqui a pouco aparece alguém explicando melhor.

Opa!
Belesma?
Não tenho Windows agora pra testar, mas tenta com o código assim:

Código teste.cpp

#include<iostream>
using std::cout;
using std::endl;

int main()
{
   cout << "Programão para mostrar ao Fórum do Diolinux esse erro de acentuação é" << endl;
   return 0;
}

Referências: C++ on ubuntu hello world - Stack Overflow

Cara copiei e testei mas não deu também, deve ser esse maldito rwindows HAHAHAHAH, mas muito obrigado pela ajuda amigo

Rwindows é sempre complicado. Dá uma testada nesse código aqui : >


#include < iostream >
#include < windows .h >
#include < tchar .h >

using namespace std;

int main()
{
_tsetlocale(LC_ALL, _T(“portuguese”));

int num;

cout < < "Insira um Número: ";
cin >> num;

if(num % 2 == 0)
{
    cout < < "\n\nO Número Inserido é Par \n" << endl;
}
else
{
    cout << "\n\nO Número Inserido é Impar \n" << endl;
}

return 0;

}

Retirei ele do site :
http://www.omundodaprogramacao.com/output-de-acentos-correctamente-em-c/
segundo o Site, o output sai assim :
image

Não funcionou e fiz o que deveria ter feito há bastante tempo, vou aprender no virtubalbox com uma distro linux HAHAHHAHA

Mas muito obrigado pela ajuda e atenção =)

1 Curtida

Tenho uma máquina virtual com o fedora e ele roda lindamente todos os acentos. Esse sistema do janelas é f#$@

1 Curtida

Olá @doretox

Como a exibição do seu código está sendo feira no CMD eu acho que você precisa definir qual é a codificação que ele deve utilizar.

Ex:

#include <iostream>
#include <Windows.h>

int main()
{
	// Definindo que o terminal deve utilizar utf-8.
	SetConsoleOutputCP(CP_UTF8);
    std::cout << "\nProgramão para mostrar ao fórum do Diolinux esse erro de acentuação é\n";
}

Isso é porque o CMD ou mesmo o PowerShell não utilizam utf-8 por padrão.

Já vi algumas situações onde deve-se colocar u8 no inicio da string.

Ex:

#include <iostream>
#include <Windows.h>

int main()
{
	// Definindo que o terminal deve utilizar utf-8.
	SetConsoleOutputCP(CP_UTF8);
    std::cout << u8"\nProgramão para mostrar ao fórum do Diolinux esse erro de acentuação é\n";
}

Contudo é muito raro algum terminal precisar deste u8 no inicio da string.

2 Curtidas

WOOOOOOOOOOOOOOOOOOOOOOOOOOW esse primeiro realmente funcionou.

Cara MUITO OBRIGADO ela ajuda o/

1 Curtida