diff --git a/src/signal/signal-cast-helper.cpp b/src/signal/signal-cast-helper.cpp
index 52c19cf046a9ca59a89cbec29b51f5477207b97d..bde4ff5d5792c0d518a8011fa013c98f5d88b6a1 100644
--- a/src/signal/signal-cast-helper.cpp
+++ b/src/signal/signal-cast-helper.cpp
@@ -73,6 +73,17 @@ void DefaultCastRegisterer<dynamicgraph::Matrix>::trace(
     }
 }
 
+// for std::string, do not check failure. If input stream contains an
+// empty string, iss.fail() returns true and an exception is thrown
+template <>
+inline boost::any DefaultCastRegisterer<std::string>::cast
+(std::istringstream &iss)
+{
+  std::string inst ("");
+  iss >> inst;
+  return inst;
+}
+
 /// Registers useful casts
 namespace {
 DefaultCastRegisterer<double> double_reg;