stringstream konvertierung von string in long double



  • Ich möchte einen string in ein long double konvertieren.

    std::string buf = "1..3";
    std::istringstream str(buf);
    long double number;
    
    str >> number;
    
    if (!str)
    	throw std::exception();
    

    Bei dieser Eingabe steht in number am Ende 1 und der Stream ist in einem gültigen Zustand. Wieso? Zwei Punkte mitten im String sind doch kein gültiges double? Wie kann ich diese Verhaltensweise ändern?



  • asdfsgdsgsg schrieb:

    Zwei Punkte mitten im String sind doch kein gültiges double?

    Nein, es sind zwei gültige doubles hintereinander!



  • Ah natürlich, danke!

    Lösung sieht jetzt bei mir so aus:

    std::string buf = "1..3";
    std::istringstream str(buf);
    long double number;
    
    str >> number;
    
    if (!str || str.rdbuf()->in_avail())
        throw std::exception();
    

Anmelden zum Antworten