Avatar billede borrisholt Novice
08. oktober 2004 - 17:20 Der er 12 kommentarer og
1 løsning

Danske karekterer i et consol program

Hej Eksperter

Jeg har skrevet et consol program i C++, nu vil jeg gerne skrive noget tekst på skærmen. Det gør jeg således :

cout << "CPR Nummeret skal være på formen \"ddmmyy-xxxx\" : " << endl;

problemet er bare at det står
CPR Nummeret skal vµre pÕ formen "ddmmyy-xxxx" :

på skærmen.

Hvad gør jeg galt ?

Jens B
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:23 #1
Du skal vel skrive ud med CP850 (DOS) tegnsæt og ikke CP1252 (Windows) tegnsæt.
Avatar billede borrisholt Novice
08. oktober 2004 - 17:24 #2
hvordan gør man det?
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:24 #3
Forskellige muligheder:
  - skriv koden med en editor som kan gemme i CP850
  - skriv de danske bogstaver som \xNN (ifølge CP850 tabel)
  - kald en konverterings funktion som konvertere inden udskrift
Avatar billede borrisholt Novice
08. oktober 2004 - 17:25 #4
kan man ikke bare sætte det op i makefilen ?
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:25 #5
PS: Og husk at selv med CP850 kan Windows NT/2000/XP kun vise Ø og ø korrekt i Lucida Font.
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:26 #6
Ikke mig bekendt.
Avatar billede borrisholt Novice
08. oktober 2004 - 17:29 #7
Hmmn .. Jeg er helt blank på områder. Jeg plejer at kode Delphi, og der findes problemet ikke :-(

Så lidt hjælp for dummies vil jeg være glad for :

Jeg bruger den her editor : http://www.bloodshed.net/
og gcc som compiler.

Jens B
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:34 #8
http://www.kostis.net/charsets/cp850.htm

ÆØÅæøå bør være \x92\x9D\8F\x91\x9B\x86 hvis jeg kan aflæse korrekt
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:35 #9
Så prøv lige:

cout << "\x92\x9D\8F\x91\x9B\x86" << endl;

(og husk det med Ø og Lucida font)
Avatar billede arne_v Ekspert
08. oktober 2004 - 17:36 #10
Hvis du vil konvertere en streng:

#include <stdio.h>
#include <string.h>

//**********************************************************************
//
// (ISO-8859-1/IsoLatin1/CP-819 -> CP-850/PC-8-ML) conversion
//
// Notes:
//  0-127 left unchanged
//  128-255 converted (to zero if no equivalence)
//
//**********************************************************************

unsigned char cscvt_to_cp850_table[256] = {
  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  0,173,189,156,207,190,221,245,249,184,166,174,170,240,169,238,
248,241,253,252,239,230,244,250,247,251,167,175,172,171,243,168,
183,181,182,199,142,143,146,128,212,144,210,211,222,214,215,216,
209,165,227,224,226,229,153,158,157,235,233,234,154,237,231,225,
133,160,131,198,132,134,145,135,138,130,136,137,141,161,140,139,
208,164,149,162,147,228,148,246,155,151,163,150,129,236,232,152
};

void cscvt_to_cp850(char *s1,char *s2)
{
  int i;
  strcpy(s2,s1);
  for(i=0;i<(int)strlen(s1);i++) s2[i]=cscvt_to_cp850_table[(unsigned char)s2[i]];
  return;
}

int main()
{
  char win[] = "ABCabcÆØÅæøå123";
  char dos[100];
  cscvt_to_cp850(win,dos);
  printf("%s -> %s\n",win,dos);
}
Avatar billede borrisholt Novice
08. oktober 2004 - 17:37 #11
tak for hjælpen ... Smid et svar
Avatar billede arne_v Ekspert
08. oktober 2004 - 19:40 #12
svar
Avatar billede borrisholt Novice
11. oktober 2004 - 13:24 #13
Det virker perfekt. Endnu engang tak.
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