13. november 2004 - 13:55
Der er
15 kommentarer og 1 løsning
Viser mystiske tegn
Jeg ved egentligt ikke om det er C++ der er problemet, men når jeg har compeilet noget c++ og det skal vises i CMD kommer der mærkelige tegn i stedet for æ ø å. Hvad er der galt? hilsen Morten PS. man kan åbenbart ikke skrive æøå i titlen!!
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
13. november 2004 - 13:56
#1
vel fordi det er danske tegn?
13. november 2004 - 13:57
#2
det kan være du skal gemme titlen i en string og kalde den som titel
13. november 2004 - 13:58
#3
ja det er danske tegn, med de må da kunne vises!
13. november 2004 - 14:01
#4
det kan det også godt i Java så burde det også her... kan du ikke gemme din titel i en String? og sætte din frames title til den string?
13. november 2004 - 14:03
#5
glem det med den titel - vet er her på exp.dk du ikke kan skrive æøå i titlen i et spr.
13. november 2004 - 14:04
#6
ok
13. november 2004 - 14:05
#7
hvis C++ bruger unicode så burde det jo virke
13. november 2004 - 15:02
#8
Et lille program der viser et par metoder til at omgå problemet: #include <string.h> #include <stdio.h> #define ae "\x91" #define oe "\x9b" #define aa "\x86" #define AE "\x92" #define OE "\x9D" #define AA "\x8F" char *ToDos(char *src) { static unsigned char dos_map[] = {0x91, 0x9B, 0x86, 0x92, 0x9D, 0x8F}; static unsigned char win_map[] = {"æøåÆØÅ"}; int i; for(i = 0; win_map[i]; i++) { char *s; while((s = strchr(src, win_map[i])) != 0) *s = dos_map[i]; } return src; } int main() { char Str1[] = "Dansk streng med æøå ÆØÅ"; char Str2[] = "Anden streng med " ae " og " oe " samt " AA; ToDos(Str1); printf("%s\n", Str1); printf("%s\n", Str2); return 0; }
13. november 2004 - 15:04
#9
I C++ kunne man lave ToDos som følger, den ændrer ikke på input, men laver et kopi: std::string ToDos(const string &src) { static unsigned char dos_map[] = {0x91, 0x9B, 0x86, 0x92, 0x9D, 0x8F}; static unsigned char win_map[] = {"æøåÆØÅ"}; string Dest = src; int i; for(i = 0; win_map[i]; i++) { string::size_type x; while((x = Dest.find(win_map[i])) != Dest.npos) Dest[x] = dos_map[i]; } return Dest; }
13. november 2004 - 15:35
#10
det ser fint ud , findes der en headerfil eller en færdig class der klarer trixet Bertel du må lige svare!
13. november 2004 - 15:40
#11
den sidste er jeg ikke helt med på! dit første svar er ok
13. november 2004 - 16:31
#12
Den sidste bruger du med: std::string OriginalStr = "Streng med æøå og ÆØÅ"; std::string OversatStr = ToDos(OriginalStr); Eller: std::cout << ToDos("Rødgrød med fløde") << std::endl; Der findes, mig bekendt, ikke en færdig header eller class til formålet. Jeg samler ikke på point, mine svar er gratis.
13. november 2004 - 16:33
#13
OK, men tak samler du på - så tak for hjælpen.
13. november 2004 - 16:43
#14
den sidste fatter jeg ikke
13. november 2004 - 23:01
#15
Den sidste: std::cout << ToDos("Rødgrød med fløde") << std::endl; Her sker der ca følgende: 1: char sekvensen "Rødgrød med fløde" (en string literal) bliver oversat til en std::string (det der bliver til src i ToDos). 2: Funktionen ToDos kaldes med denne std::string. 3: ToDos lave et kopi af denne std::string (Dest), og laver Windows-æøå om til DOS-åæø. 4: ToDos returnerer denne kopi 5: Kopien (med DOS-æøå) udskrives til std::cout (sammen med en std::endl).
14. november 2004 - 10:59
#16
ok
Kurser inden for grundlæggende programmering