Ir ao conteúdo

Posts recomendados

Postado

Bom dia, pessoal.

Este é meu primeiro post, e assim posso não colocar a questão como deve ser.

Eu uso o Code::Blocks no Windows 10, e estou com um problema que não consegui resolver, por mais que tenha pesquisado na Internet, inclusive me baseando em respostas aqui deste Fórum.

Meu problema é o seguinte: em um programa, estou utilizando o setlocale(LC_ALL,"Portuguese") para que as perguntas apareçam na tela em português do Brasil; mas quando faço uma entrada de dados também em português, ele dá erro quando retorna para a tela o printf.

Exemplo:

  Escrito no Programa      Mostra na tela      Informa na tela     Retorna na tela     Como aparece na tela

  printf("Início : ");                Início:                    Março                    Mar╬o                       Início:  Mar╬o

 

Se, no entanto, retiro o setlocale(LC_ALL,"Portuguese"), ocorre o contrário, ou seja, acaba ficando assim:

Exemplo:

  Escrito no Programa      Mostra na tela      Informa na tela     Retorna na tela     Como aparece na tela

      printf("Início : ");          InÝcio:                           Março                  Março                     InÝcio:  Março

 

Alguém poderia me ajudar para fazer com que, tanto a informação do programa na tela, quanto a entrada do usuário, apareçam em português? Agradeço sua atenção e auxílio desde já.

 

 

 

  • Curtir 1
Postado

Esta é a parte do programa que estou tentando resolver. Além disso, também serão digitados nomes e outros, que levam acento (à, á, ã, ç, etc). Mas resolvendo um, resolve-se o resto.

 

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <stdio.h>
#include <locale.h>
#include <vector>
#include <string>

using namespace std;


main (void)
{
     setlocale(LC_ALL, "Portuguese");

    std::string inip;
    std::string fimp;
    std::string nomeal;
    std::vector<std::string>nomes;

    char resp;

    cout << "Informe os Dados do Período";
    cout << "\n\nInício: ";
    std::getline(std::cin, inip);
    cout << "\nFinal: ";
    std::getline(std::cin, fimp);

     fflush(stdin);
    system("cls");
        cout << "Notas no Período de " << inip << " a " << fimp;
        std::cout << "\n\nInforme o nome do aluno: ";
        std::getline(std::cin, nomeal);
        if(resp != 'n')
            nomes.push_back(nomeal);

    system("cls");

    system("pause");
    return 0;
}

 

As duas imagens abaixo estão com o comando setlocale(LC_ALL, "Portuguese").

A entrada dos dados, assim como mostrado no código, está correta, e assim aparece no monitor.

image.thumb.png.973f4a8a18ee7db3e531e072051df027.png

 

Esta é a outra entrada, já com os meses, e aparece com erro.

image.thumb.png.38a1a6e08eb27b6469b7e4ddbd8c01af.png

 

As imagens a seguir, seguem sem o comando setlocale(LC_ALL, "Portuguese").

Primeira entrada, já apresentando o monitor com os erros de português.

image.thumb.png.86cdfe868a0904a9a7ace8e8604bce29.png

 

A entrada dos meses feito polo usuário, no caso, apresenta-se normal, como abaixo:

image.thumb.png.2b86e4280bf94f0b3b5fd727efe730b9.png

 

Este é o problema com o qual me deparo. Será que tem alguma maneira de fazer aparecer a pergunta inicial e a resposta em português?

 

Agradeço sua atenção, Xaws

 

 

 

 

image.png

image.png

image.png

image.png

  • Curtir 1
Postado

@Luís Henrique Boscato     nessa linha aqui você definiu que quer usar o idioma " portuguese "

setlocale(LC_ALL, "Portuguese");

mas você precisa deixar o sistema definir isso automaticamente, então para isso coloque o comando sem a palavra portuguese, então ficaria assim :

setlocale(LC_ALL, "");
printf("A localidade corrente agora é %s \n",setlocale(LC_ALL,""));

 

  • Curtir 1
Postado

Esqueci de informar, desde a primeira postagem, que este programa é em C++.

 

Caro devair1010: se deixo setlocale(LC_ALL, "") ou setlocale(LC_ALL, "setlocale(LC_ALL, "")Portuguese"), não faz diferença, o erro continua ocorrendo quando o usuário digita.

 

Caro vangodp: estas funções não são reconhecidas pelo C++, mas sim fazem parte do C.

 

Acredito que, como foi informado por você (vangodp), este é um problema bastante complexo. Melhor então deixar assim mesmo, e apenas informar a necessidade de digitar sem acentos ou ç.

Agradeço, mesmo assim, a atenção dispensada pelos amigos.

  • Curtir 1
Postado
5 minutos atrás, vangodp disse:

 

4 horas atrás, Luís Henrique Boscato disse:

Caro vangodp: estas funções não são reconhecidas pelo C++, mas sim fazem parte do C.

Quem foi que disse isso? Claro que são reconhecidas pelo c++. A prova disso é que funcionam. Para que funcione você precisa fazer a inclusão da biblioteca de windows.h como já lhe comentou o companheiro isrnick.

Prezado vangodp, peço desculpas pela possível má colocação do que disse. Realmente, essa função funcionou, como você está colocando. Houve desatenção minha no todo de seu código, e deixei passar o comando #include <windows.h>. Peço, novamente, que compreendas a minha falta de atenção, e não o querer questionar sua indicação.

Do mesmo modo, quero apenas esclarecer que não estou "empurrando com a barriga", como foi colocado pelo amigo, mas sim houve, repito, apenas desatenção.

Certo de sua compreensão, quero agradecer o interesse em esclarecer sua colocação.

Aproveito e também agradeço ao amigo isrnick pela dica.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...