Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Konvertera flyttal

Postades av 2004-08-06 15:56:53 - Martin Adrian, i forum c++, Tråden har 8 Kommentarer och lästs av 1445 personer

Någon som har en kodsnutt för att konverera XML decimaltal till double. Grejen är ju att XML alltid använder decimalpunkt oavsett vilken locale man har på datorn.

Värdet är validerat av ett schema med typen xs:decimal så det behövs inte någon felkontroll.

istream, atof, scanf, boost::lexical_cast använder ju alla LC_LOCALE. Jag vet att man kan gör imbue på en istream men det verkar lite overkill i det här fallet.


Svara

Sv: Konvertera flyttal

Postades av 2004-08-06 17:34:16 - Niklas Jansson

Men har du ingen bra XML-komponent som skickar ut det som ett riktigt flyttal?
Annars finns ju den allra fulaste varianten - läsa in det till en sträng, plocka fram den lokala motsvarigheten, göra en replace, och sen använda stringstream...

Sen finns det väl någon möjlighet att ändra en localen?


Svara

Sv: Konvertera flyttal

Postades av 2004-08-10 12:20:26 - Johan Forsberg

Använd de angivna prefixen (borde stå i alla böcker) för temporär konvertering av datatyper.
te.x
om 3200 är av typen integer
och du tillfälligt måste konvertera den till typen Long Behöver du bara använda
3200L (L-Prefixet) eller (long)3200 eller L3200


Svara

Sv: Konvertera flyttal

Postades av 2004-08-10 14:22:00 - Niklas Jansson

Inte för att vara otrevlig, men som ny bör du nog vara här ett tag och titta runt lite innan du börjar svara på alla trådar.

För det första: Flera av trådarna du har svarat i är ganska gamla. Om du inte tillför något fundamentalt nytt och viktigt så gör vissa trådar bäst i att dö ut.

För det andra: Var säker på vad det är du svarar på innan du svarar.

I den här tråden, t.ex., är ditt svar helt felaktigt.
1. Han vill inte konvertera till long, utan han vill läsa in ett decimalvärde från en XML-fil till en double.
2. Detta vill han göra i runtime med dynamiska värden, han kan alltså inte använda några prefix.
3. Problemet rör inte själva konverteringen utan att alla inputströmmar använder datorns lokala inställningar för att avgöra om tal läses in med punkt eller komma som decimalskiljare, men att XML alltid har samma.

Inte för att vara elak, utan för att vi försöker hålla hög kvalitet på forumet.


Svara

Sv: Konvertera flyttal

Postades av 2004-08-11 10:22:10 - Johan Forsberg

Nej, jag läste inte så noga (XML). Ursäkta.


Svara

Sv: Konvertera flyttal

Postades av 2004-08-11 16:22:12 - Martin Adrian

> Men har du ingen bra XML-komponent som skickar ut det som ett riktigt flyttal?

Nej, har du?

Jag använder MSXML4 och där finns ju .nodeTypedValue men den fungerar inte med schema (returnerar alltid en sträng) om man inte explicit sätter datatypen ("r8") på varje fält innan man läser det.

> Sen finns det väl någon möjlighet att ändra en localen?

Jodå, det kändes bara som det här är ett problem som alla som jobbar med XML i C++ måste ha. (I VB finns ju Str/Val som är locale oberende)

Så här ser min lösning ut:

double XML_StrToDouble(const char* str) {
std::istringstream istr; istr.str(std::string(str));
istr.imbue(std::locale::classic());
double tmp; istr >> tmp;
if (!istr.fail() && istr.eof()) return tmp;
return 0;
}


Svara

Sv: Konvertera flyttal

Postades av 2004-08-11 19:01:21 - Niklas Jansson

>Nej, har du?
Hehe... nä...


Men det där var väl ganska snyggt ändå?
Skulle iofs gärna slänga ett exception snarare än return 0, och kanske se till att inte behöva skapa en ny istr varje gång, men i övrigt så är väl det bra?

Sen så har du väl iofs skrivit fel, if-satsen borde väl vara
if (!(istr.fail() && istr.eof()))
?


Svara

Sv: Konvertera flyttal

Postades av 2004-08-11 20:03:51 - Martin Adrian

>Sen så har du väl iofs skrivit fel, if-satsen borde väl vara
>if (!(istr.fail() && istr.eof()))

"fail" är falsk om konverteringen gick bra (dock kanske inte hela strängen användes)
"eof" är sann om hela strängen användes


Svara

Sv: Konvertera flyttal

Postades av 2004-08-12 21:44:10 - Niklas Jansson

Aha, tänkte fel där... nåja.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 781
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies