Permalänk
Hedersmedlem

[C++] Läs in åäö

Håller på med ett litet program som ska hjälpa mig i wordfeud men problemet jag har just nu är att läsa in å ä ö.

Nu när jag testade ser jag också att kommandotolken inte vill skriva dem heller. Trodde det löstes genom att ändra font i egenskaper men tydligen inte.

Jag vill minnas att det fungerade förut, jag kunde jämföra ord med å ä ö och få träff även om kommandotolken inte skrev ut bokstäverna rätt. Är det någon fil som ska inkluderas eller vad har jag missat? Ord utan å ä ö hittas såklart utan problem.

start->wd[i] != wd[i]

Så kan en jämförelse se ut. Så jag jämför ett tecken som jag läst in från fil med något jag skrivit in från tangentbordet men frågan är varför skiljer de sig då åt?

Jag har lekt lite med pekare och så för att lära mig, därför har jag inte sysslat med några strängar.

Permalänk
Vila i frid

Inte ett helt trivialt problem, det finns ingen bra lösning om du ska blanda DOS-miljö med Windows.

http://www.sweclockers.com/forum/10-programmering-och-digital...

Permalänk

Det är inte fusk om man programmerat fusket själv

Permalänk
Medlem
Skrivet av jop_the_jopsan:

Det är inte fusk om man programmerat fusket själv

"Det är inte förfalskning om du gjorde sedelpressen själv"? Näe, skulle inte tro det.

Permalänk
Medlem

Frågan har besvarats tidigare, om jag inte på något sätt misstolkade din fråga.

Använd följande escape-karaktärer:

Citat:

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

Det verkar dock inte som att ovanstående lösning fungerar i Linux, men hade du suttit i Linux så tvekar jag på att du hade haft det här problemet.

Visa signatur

Osocial, instängd och förbannad.

Permalänk
Hedersmedlem
Skrivet av Debug:

Frågan har besvarats tidigare, om jag inte på något sätt misstolkade din fråga.

Använd följande escape-karaktärer:

Det verkar dock inte som att ovanstående lösning fungerar i Linux, men hade du suttit i Linux så tvekar jag på att du hade haft det här problemet.

Men hur menar du att det är användbart i mitt fall? Jag vet ju inte när jag har å ä eller ö, ska jag hela tiden jämföra då på något sätt?

Ett problem jag har är ju att ett svenskt tecken som jag läser från min textfil skiljer sig från det jag läser från console.

Jag prövade precis att läsa in ett ord med svenskt tecken och skriva ut det igen. Går jättebra och det blir fint. Men skriver jag ut något ord med svenskt tecken som jag läst från min textfil så blir det fel tecken. ä blir õ, å blir Õ och ö blir "division-tecken".

Permalänk
Medlem
Skrivet av Shimonu:

Jag prövade precis att läsa in ett ord med svenskt tecken och skriva ut det igen. Går jättebra och det blir fint. Men skriver jag ut något ord med svenskt tecken som jag läst från min textfil så blir det fel tecken. ä blir õ, å blir Õ och ö blir "division-tecken".

Kan det vara så att du sparat filen i ett multibyte-format (utf-8 t ex) men låter ett tecken vara åtta bitar vid inläsning?

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Denna sidan verkar förklara problemet ok

http://illegalargumentexception.blogspot.com/2009/04/i18n-uni...

TLDR: Notepad har encoding Windows-1252 och kommandoprompten har code page 850. Antingen måste i ditt program konvertera från det ena till det andra, eller så måste du ställa in antingen notpad eller kommandoprompten att använda den andra kodningen.

Permalänk
Skrivet av Shimonu:

Håller på med ett litet program som ska hjälpa mig i wordfeud men problemet jag har just nu är att läsa in å ä ö.

Nu när jag testade ser jag också att kommandotolken inte vill skriva dem heller. Trodde det löstes genom att ändra font i egenskaper men tydligen inte.

Jag vill minnas att det fungerade förut, jag kunde jämföra ord med å ä ö och få träff även om kommandotolken inte skrev ut bokstäverna rätt. Är det någon fil som ska inkluderas eller vad har jag missat? Ord utan å ä ö hittas såklart utan problem.

start->wd[i] != wd[i]

Så kan en jämförelse se ut. Så jag jämför ett tecken som jag läst in från fil med något jag skrivit in från tangentbordet men frågan är varför skiljer de sig då åt?

Jag har lekt lite med pekare och så för att lära mig, därför har jag inte sysslat med några strängar.

Direkt under int_main, skriv då " setlocale(LC_ALL, "swedish"); " utan citattecknena.
Detta gör att du kan skriva ut åäö direkt i programmet.

Mvh Daniel

Visa signatur

"640K ought to be enough for anybody" - Bill Gates, 1981