[mlpack-git] master: fix bug--isdigit will not treat 1.004e10 as digit (a340e23)

gitdub at mlpack.org gitdub at mlpack.org
Tue May 31 10:14:17 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/1f562a1aba7ae55475afcc95659511c2b7f694e5...5b8fdce471328f722fcd8c0f22a6d995ce22c98b

>---------------------------------------------------------------

commit a340e23b46356e91444faeea93421e10e1a5a378
Author: stereomatchingkiss <stereomatchingkiss at gmail.com>
Date:   Tue May 31 22:14:17 2016 +0800

    fix bug--isdigit will not treat 1.004e10 as digit


>---------------------------------------------------------------

a340e23b46356e91444faeea93421e10e1a5a378
 src/mlpack/core/data/load_impl.hpp | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/mlpack/core/data/load_impl.hpp b/src/mlpack/core/data/load_impl.hpp
index c74b089..f6fc93e 100644
--- a/src/mlpack/core/data/load_impl.hpp
+++ b/src/mlpack/core/data/load_impl.hpp
@@ -390,8 +390,11 @@ bool Load(const std::string& filename,
 
     auto notNumber = [](std::string const &str)
     {
-      return std::any_of(std::begin(str), std::end(str),
-                         [](char c){ return !std::isdigit(c);});
+      eT val(0);
+      std::stringstream token;
+      token.str(str);
+      token>>val;
+      return token.fail();
     };
     size_t row = 0;
     while (!stream.bad() && !stream.fail() && !stream.eof())
@@ -422,12 +425,12 @@ bool Load(const std::string& filename,
         }
         else
         {          
-          std::stringstream sstream;
+          std::stringstream token;
           for(size_t i = 0; i != tokens.size(); ++i)
           {            
-            sstream<<tokens[i];
-            sstream>>matrix.at(row, i);
-            sstream.clear();
+            token.str(tokens[i]);
+            token>>matrix.at(row, i);
+            token.clear();
           }
         }
       }




More information about the mlpack-git mailing list