Aus Ergebnisanzeige ein float machen



  • Hallo,

    Von einer Messung bekomm ich einen bstr (wchar_t*);

    Wenn ich mir den auf ein Label lege sieht der so aus: *0.001E1 und noch zeilumbruch am ende.

    wie kann ich daraus jetzt ein float oder double wert machen?

    In der Beschreibung von dem gerät steht folgendes:

    Note: Data is VARIANT pointer to a BSTR. This was done in order to make the string easily accessible in all languages.

    The device measures and reports at a rate of 15 Hertz. There are 2 possible responses.

    1. Standard E notation (example *1.500E-3 for 1.5 milliwatts) for a successful reading.
    2. *OVER. If beyond the presently configured measurement capabilities of the USBI.

    Gibt es da eine relativ einfache möglichkeit ohne jedes zeichen ind die Hand zu nehmen??

    Danke schonmal



  • Hallo

    Du könntest mit den Stringstreams konvertieren :
    Zuerst das '*' und den Zeilenumbruch aus dem string extrahieren und dann über wstringstream in float/double umwandeln.

    bis bald
    akari



  • Wie wandel ich das denn dann um?

    soweit bin ich schonmal:

    Messwert.bstrVal[0]='0';
    
    std::wstringstream test;
    
    test << Messwert.bstrVal;
    

    aber wie gehts nu weiter. wie kann ich den jetzt umwandeln?



  • Hallo

    wchar_t* val = L"*0.001E1";
      val[0]=L'0';
    
      std::wstringstream convert;
      convert << val;
      double dest;
      convert >> dest;
    

    bis bald
    akari



  • Danke hat mir sehr geholfen!


Anmelden zum Antworten