Change setFromEscapedString to take the string plus begin and end offsets.
diff --git a/ndn-cpp/name.cpp b/ndn-cpp/name.cpp
index 0b8ab91..d94eecd 100644
--- a/ndn-cpp/name.cpp
+++ b/ndn-cpp/name.cpp
@@ -103,9 +103,9 @@
   return result.str();
 }
 
-bool Name::Component::setFromEscapedString(const char *first, const char *last)
+bool Name::Component::setFromEscapedString(const char *escapedString, unsigned int beginOffset, unsigned int endOffset)
 {
-  string trimmedString(first, last);
+  string trimmedString(escapedString + beginOffset, escapedString + endOffset);
   trim(trimmedString);
   string component = unescape(trimmedString);
         
@@ -190,7 +190,7 @@
       iComponentEnd = uri.size();
     
     components_.push_back(Component());
-    if (!components_[components_.size() - 1].setFromEscapedString(&uri[iComponentStart], &uri[iComponentEnd]))
+    if (!components_[components_.size() - 1].setFromEscapedString(&uri[0], iComponentStart, iComponentEnd))
       // Ignore the illegal component.  This also gets rid of a trailing '/'.
       components_.pop_back();