From b7095bb0f5f9d966ffeb62ce37cd2820facc1a8e Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Wed, 17 May 2017 20:36:55 +0200 Subject: Improve parsing of invalid floats --- stddev.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/stddev.cpp b/stddev.cpp index ee36af4..5920b6d 100644 --- a/stddev.cpp +++ b/stddev.cpp @@ -1,6 +1,7 @@ #include #include #include +#include using namespace std; @@ -17,11 +18,24 @@ int main(int,char **argv){ vector data; + bool warned=false; + double total=0; + string word; while(true){ + cin>>word; double v; - cin>>v; if(!cin)break; + const char *start=word.c_str(); + char *endp; + v=strtod(start,&endp); + if(endp!=start+word.size()||!isfinite(v)){ + if(!warned){ + warned=true; + cerr<<"Warning: invalid floating-point values detected"<