Woodoo Skrevet 4. februar 2004 Del Skrevet 4. februar 2004 Når jeg lager console programmer i Visual C++, kan ikke bokstavene æ, ø og å vises. Hva skyldes dette? Når jeg kjører programmer og skriver inn bokstaver kan jeg skrive æ, ø og å, men når jeg har de bokstavene i kildekoden vil de ikke vises. Lenke til kommentar
moesen Skrevet 4. februar 2004 Del Skrevet 4. februar 2004 Når jeg lager console programmer i Visual C++, kan ikke bokstavene æ, ø og å vises. Hva skyldes dette? Når jeg kjører programmer og skriver inn bokstaver kan jeg skrive æ, ø og å, men når jeg har de bokstavene i kildekoden vil de ikke vises. DOS støtter vel ikke æ,ø,å... Bruk aa, 0, ae istedet for Lenke til kommentar
kjetil7 Skrevet 4. februar 2004 Del Skrevet 4. februar 2004 (endret) Dette stemmer nok ikke. Du må gjøre om Ansi strengen eller "wide char" strengen til OEM karaktersett. Dette kan du gjøre ved å bruke CharToOem() funksjonen (som er en makro for CharToOemA eller CharToOemW). Et lite eksempel: #include <string> #include <iostream> #include <windows.h> #pragma comment( lib, "user32.lib" ) //for sikkerhetsskyld using std::cout; using std::endl; int main() { std::string myStr("æ ø å Æ Ø Å"); cout << "before: " << myStr << endl; ::CharToOemA(myStr.c_str(), const_cast<char*>(myStr.c_str()) ); cout << "after: " << myStr << endl; } Det er ikke dumt å lage noen hjelpefunksjoner slik at du slipper å bruke const_cast (eller eksternt buffer) i hytt og pine. Det vil også gjøre det mulig å behandle ANSI og Unicode strenger likt. Under finner du noen av mine egne hjelpefunksjoner som jeg har i mitt eget strext namespace. namespace strext { inline std::string CharToOemCopy(const char* str_) { assert(str_); std::string res(std::char_traits<char>::length(str_), 0); ::CharToOemA(str_, const_cast<char*>(res.c_str()) ); return res; } inline std::string CharToOemCopy(const wchar_t* str_) { assert(str_); std::string res(std::char_traits<wchar_t>::length(str_), 0); ::CharToOemW(str_, const_cast<char*>(res.c_str()) ); return res; } template < class Traits, class Allocator > inline std::basic_string<char, Traits, Allocator> CharToOemCopy(const std::basic_string<char, Traits, Allocator>& str_) { std::basic_string<char, Traits, Allocator> res(str_.length(), 0); ::CharToOemA(str_.c_str(), const_cast<char*>(res.c_str()) ); return res; } template < class Traits, class Allocator > inline std::string CharToOemCopy(const std::basic_string<wchar_t, Traits, Allocator>& str_) { std::string res(str_.length(), 0); ::CharToOemW(str_.c_str(), const_cast<char*>(res.c_str()) ); return res; } } Enkel bruk: // inkludèr filer.. int main() { std::string strA1("æ ø å Æ ø å"); const char* strA2 = "æ ø å Æ ø å"; cout << "Uten CharToOem:\n"; cout << strA1 << '\n'; cout << strA2 << "\n\n"; cout << "Med CharToOem:\n"; cout << strext::CharToOemCopy(strA1) << '\n'; cout << strext::CharToOemCopy(strA2) << '\n' << endl; } Makroelskere kan også gjøre det enda "penere" ved å lage en makro: #define OEM(str) ::strext::CharToOemCopy(str) //.... cout << OEM(myStr) << endl; Endret 4. februar 2004 av kjetil7 Lenke til kommentar
kjetil7 Skrevet 4. februar 2004 Del Skrevet 4. februar 2004 Jeg burde kanskje også nevt at det finnes tilsvarende funksjoner for å konvertere OEM til ANSI/Unicode. De heter ikke overraskende OemToChar()... Lenke til kommentar
Sharagoz Skrevet 10. februar 2004 Del Skrevet 10. februar 2004 Sånn gjør jeg det for å få æ, ø, å i console: Start -> run(kjør) skriv "charmap" Det skal nå komme opp et tegnkart Velg "Terminal" der det står "Skrift:" Finn det tegnet du skal ha f.eks æ, ø eller å. Trykk "velg" Marker og kopier tegnet som kommer opp i "kopier følgende tegn" Lim dette tegnet inn i koden din. Dette tegnet vil nå gi det tegnet du valgte Her er noen eksempler: ø = › å = † æ = ‘ Det finne også mange andre tegn som man kan velge.... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå