Avatar billede tosssen Nybegynder
28. december 2002 - 02:28 Der er 10 kommentarer og
1 løsning

Æ, ø og å i console mode programmer

Jeg har det problem at æ,ø og å skrives forkert til skærmen af mine programmer når jeg enten har indlæst dem fra en fil eller skrevet dem i min source kode. Jeg bruger cout til at skrive dem til skærmen.
Mærkeligt nok virker det fint når jeg som input mens programmerne kører skriver noget med æ,ø og å.
Er der nogen der ved hvordan dette løses?

Hilsen Søren

P.S.: Jeg bruger visual c++ .net
Avatar billede jpk Nybegynder
28. december 2002 - 10:25 #1
Det er et kendt problem...
Du kan bruge nedenstående værdier for at skrive de rigtige bogstaver.

#include "stdafx.h"
#include "iostream.h"
#include <fstream.h>


int main(int argc, char* argv[])
{
    // Skriv til std out
    cout << "\x91" << endl;
    cout << "\x92" << endl;
    cout << "\xed" << endl;
    cout << "\x30" << endl;
    cout << "\x86" << endl;
    cout << "\x8f" << endl;

    // Skriv til fil
    ofstream skriv_fil("test.txt");
    skriv_fil << "æøå" << endl;

    return 0;
}
Avatar billede tosssen Nybegynder
28. december 2002 - 10:37 #2
Jeg kan ikke compile det:
"fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory"
Avatar billede jpk Nybegynder
28. december 2002 - 11:05 #3
slet den...
(linien #include "stdafx.h")
Avatar billede tosssen Nybegynder
28. december 2002 - 11:12 #4
Der er vidst en fejl i 'lille ø' (\xed), den skriver Ý i stedet for.
Avatar billede tosssen Nybegynder
28. december 2002 - 11:18 #5
En sidste ting, hvordan kan jeg med ifstream læse filer, som indeholder æ,ø og å, og derefter udskrive dem korrekt til skærmen?
Avatar billede tosssen Nybegynder
28. december 2002 - 11:27 #6
Fandt det selv: ø: \x9b
Avatar billede tosssen Nybegynder
28. december 2002 - 11:30 #7
Nu har jeg givet dig pointene, men jeg håber du i det mindste vil kigge på anden del af mit spørgsmål (det med ifstream).
Avatar billede jpk Nybegynder
28. december 2002 - 12:58 #8
Hmm, så vidt jeg kan se, er der ikke nogen "anden del" på dit spørgsmål...

Hvis du hentyder til din tilføjelse af 28/12-2002 11:18:52, hvad er da problemet?
Får du forkerte tegn ved læsning af en fil?

Nedenstående virker fint hos mig...

#include "iostream.h"
#include <fstream.h>


int main(int argc, char* argv[])
{
    // Skriv til std out
    cout << "\x91" << endl;
    cout << "\x92" << endl;
    cout << "\xed" << endl;
    cout << "\x30" << endl;
    cout << "\x86" << endl;
    cout << "\x8f" << endl;

    // Skriv til fil
    ofstream os("test.txt");
    os << "æøå" << endl;

    // Læs fra fil
    ifstream is("test.txt");
    char ae, oe, aa;
    is >> ae;
    is >> oe;
    is >> aa;

    return 0;
}
Avatar billede jpk Nybegynder
28. december 2002 - 13:20 #9
ellers kan du jo altid lave en funktion der erstatter med de værdier der virker...
se fx her:

string strChars = "æøå";
cout << strChars.c_str() << endl; // her bliver det forkert
for(int i=0; i<strChars.size(); ++i)
{
    if(strChars.at(i) == 'æ')
        strChars.at(i) = '\x91';
    if(strChars.at(i) == 'ø')
        strChars.at(i) = '\xed';
    if(strChars.at(i) == 'å')
        strChars.at(i) = '\x86';
}
cout << strChars.c_str() << endl; // her bliver det rigtig
Avatar billede tosssen Nybegynder
29. december 2002 - 00:27 #10
Mange tak! Jeg tilføjede ikke den anden del af mit spg, jvf:
"...har _indlæst dem fra en fil_ eller _skrevet dem i min source kode_"
Avatar billede henner730 Praktikant
10. juli 2017 - 20:02 #11
De forskellige IDE for c++ sætter nogle parametre når konsol vinduet startes..konsol er også et windows program. Derfor må man se hvilken tegntabel
der sættes op og rette konsols tegntabel til codepage 850 eller 1250. i selve programmet kan man includere flg :
#include <stdlib.h>
.
.
int main() {

system("chcp1252");

Der skal meget til før en af disse løsninger ikke virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester