Miten saan seuraavassa koodissa skandinaaviset merkit, eli ääkköset, tulostumaan oikein:
#include <iostream.h> void main() { cout << "Ääkköset"; }
Käytän Dev C++ kääntäjää.
ä = \x84 ja ö = \x94
Eli
#include <iostream.h> void main() { cout << "\x84\x84kk\x94set"; }
Kiitos!
Mistä löytyisi lista kaikista C++ -erikoismerkeistä?
Etsin Googlella, mutta en löytänyt...
Lyhyesti: Koodi muodostetaan kirjoittamalla \x ja halutun merkin ascii koodi heksadesimaaleissa.
Pitkästi: Katso netistä joku ascii taulukko. Etsi sieltä haluttu merkki ja katso sitä vastaava koodi. Muuta desimaali luku heksadesimaaliluvuksi vaikka windowsin laskimella. Kirjoita muodossa \x[heksadesimaali].
Kiitos!
Nyt kun tiesin, mitä etsiä, löysin taulukon, missä on laskettu valmiiksi heksadesimaalit eri erikoismerkeille:
http://www.computerhope.com/ascii.gif
Tämä ongelma siis liittyy siihen, että koodi kirjoitetaan Windowsissa ja ajetaan DOS-ikkunassa. Windowsin käyttämä merkistö on eri kuin tuo nimenomainen DOS-merkistö ja siksi ääkköset menee pieleen.
Sen sijaan, että tekee merkkijonoista koodissa vaikeasti luettavaa \xab-sotkua, asian voi hoidella toisinkin. Asiasta on keskusteltu ennenkin, ja yksi konsti on muuttaa DOS-ikkunan käyttämä codepage samaksi kuin Windowsin.
Toinen vaihtoehto voisi olla vaikka kirjoittaa koodia - tai ainakin ne tekstit jonnekin - DOS-editorilla, jolloin merkistö on valmiiksi sama.
Ihan aikuisten oikeissa järjestelmissä merkistö- ja muut kansainvälistysasiat hoidellaan niin, että käytetään locale- ja message catalog -tyyppisiä juttuja tai Windowsissa resurssitiedostoja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.