webForumDet fria alternativet

Programmering A :)

15 svar · 493 visningar · startad av voigtann1

voigtann1Medlem sedan juni 20019 519 inlägg
#1

har just börjat.. men tycker det e as kul.. men hur får man å ä och ö så att det fungera perfekt? jag får bara fula tecken :( jag kör mycket enkla koder nu ibörjan (läser i en bok)

#include <iostream.h>
#include <conio.h>
void main()
{
        int tal1;
        clrscr();
        cout << "Skriv in ett heltal: ";
        cin  >> tal1;
        cout << "Om jag adderar 5 blir resultatet: " << (tal1+5) << endl
             << "Om jag subtraherar 5 blir resultatet: " << (tal1-5)
             << endl
             << endl
             << "Tryck någon tangent för förtsättning!";
        getch();
}
Marcus EMedlem sedan maj 20021 466 inlägg
#2

Det finns olika alternativ.
1. Använd Windows-funktionen CharToOem. Den konverterar din sträng från nuvarande teckentabell till kommandopromptens teckentabell (OEM).
2. Kompilera programmet som Unicode och använd Unicode-funktioner för att skriva ut text. T.ex. WriteConsole.
3. Skriv koden i en editor och spara som OEM (t.ex. en DOS-editor).
4. Använd inte svenska tecken.

Alternativ 1 och 2 är att föredra. Fast för nybörjare är nog alternativ 4 enklast.

CoperMedlem sedan mars 2002554 inlägg
#3

I ställer för att skriva å så skriver du \x86
Och så vidare........

å = \x86
Å = \x8F
ä = \x84
Ä = \x8E
ö = \x94
Ö = \x99

Kan till lägga att man skriver ut hexe tal genom att skriva
\xnn
då nn är hexe talet.....

Marcus EMedlem sedan maj 20021 466 inlägg
#4

Sedan så finns det ett femte alternativ som jag inte rekommenderar alls. Det är det som Cooper nyss skrev. ;)

Det går inte att se vad det är för tecken.
Det är fult.
Det är jobbigt.
Det gäller endast text du skriver och inte text som användaren skriver in.
Det gäller inte alla andra tecken som man kan tänkas använda. (€, ü, é etc.)

CoperMedlem sedan mars 2002554 inlägg
#5

Marcus E skrev:

1. Använd Windows-funktionen CharToOem. Den konverterar din sträng från nuvarande teckentabell till kommandopromptens teckentabell (OEM).

Kan du förklar hur man gör det....

Men sen om man läser Programmering A så klara men sig bra med hexe systemat även om det inte blir lätt att läsa koden. Mitt förslag står i den boken som vi har i skolan.

Marcus EMedlem sedan maj 20021 466 inlägg
#6

Cooper skrev:

Kan du förklar hur man gör det....

Ja, visst.

#include <windows.h>

char out[] = "Hej på dig!";
CharToOem(out, out);
cout << out;

Obsarvera att detta endast fungerar när man kompilerar som ANSI och att det måste gå att skriva till bufferten.

char *out = "Hej på dig!";
går alltså inte. Eftersom texten kommer lagras skrivskyddad då.

PeWMedlem sedan juni 200010 432 inlägg
#7

Varför envisas med svenska tecken? Inom programmering används ju uteslutande engelska och varför inte köra så från början? ... ;)

CoperMedlem sedan mars 2002554 inlägg
#8

Tack Marcus E...
Det fungerade mycket bra.

PeW -> För att det är mycket mer praktiskt om man har svenska tecken i ett svenskt program....:OO
Tycker jag i alla fall :)

developerMedlem sedan aug. 2001458 inlägg
#9

Marcus E skrev:

char *out = "Hej på dig!";
går alltså inte. Eftersom texten kommer lagras skrivskyddad då.

Nej, "out" blir skrivbar i det fallet. För att få den "skrivskyddad" krävs const framför.

Marcus EMedlem sedan maj 20021 466 inlägg
#10

Nej

Developer:
Nej, när du skapar en pekare till en textsträng inom citationstecken lagras den skrivskyddad. Det går att byta ut innehållet, men det kommer att ge ett körningsfel (access violation).

Jag är dock osäker på om detta endast gäller Visual C++ kompilator.

developerMedlem sedan aug. 2001458 inlägg
#11

Marcus, du har såklart helt rätt. Vet inte vad som flög i mig... ;)

Tipset med CharToOem() var förresten lysande, hade ingen aning om det. Jag har alltid (nja...) kört med Unicode, men default-fonten i NT visar ju ändå inte åöö.

Sang-draxMedlem sedan juli 2002581 inlägg
#12

Det bästa sättet är faktiskt att göra så här:
#define aa "\x86"
#define ae "\x84"

Sedan skriver man strängen så här:
char* str = "Textstr"ae"ng";

BeatboxMedlem sedan okt. 20013 217 inlägg
#13

Unicode borde ju lösa problemet.

plelkesMedlem sedan mars 2002823 inlägg
#14

Jag är absolut nybörjare på porgramering, men har redan drabbats av att inte kunnat skriva svenska tecken....

Antag att jag vill ha nedanstående kodsnutt rättstavat:

printf("mat in din längd här:%c\n");
  • kan ngn förlkara steg för steg hur jag lyckas med detta?/tack

Jag kör:

  1. win 98 SE - svensk
  2. MS Visual C++ 6,0 pro - engelska
Marcus EMedlem sedan maj 20021 466 inlägg
#15

Utskriven, menar du? Rättstavning är något helt annat. Använd printf istället för cout i mitt tidigare exempel.

PeWMedlem sedan juni 200010 432 inlägg
#16

Denna header kan ju för enkelhetens skull inkluderas och användas om man nu bara sitter och labbar i dos/cmd och envisas med svenska tecken.

137 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)