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();