Builder::operator[] plus tests
diff --git a/include/json/reader.h b/include/json/reader.h
index 154acbd..64650ec 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -285,7 +285,7 @@
 \code
   using namespace Json;
   CharReaderBuilder builder;
-  builder.settings_["collectComments"] = false;
+  builder["collectComments"] = false;
   Value value;
   std::string errs;
   bool ok = parseFromStream(builder, std::cin, &value, &errs);
@@ -337,6 +337,11 @@
    *   otherwise, indicate bad settings via 'invalid'.
    */
   bool validate(Json::Value* invalid) const;
+
+  /** A simple way to update a specific setting.
+   */
+  Value& operator[](std::string key);
+
   /** Called by ctor, but you can use this to reset settings_.
    * \pre 'settings' != NULL (but Json::null is fine)
    * \remark Defaults:
diff --git a/include/json/writer.h b/include/json/writer.h
index 36ed4b9..4c7a8bd 100644
--- a/include/json/writer.h
+++ b/include/json/writer.h
@@ -119,6 +119,10 @@
    *   otherwise, indicate bad settings via 'invalid'.
    */
   bool validate(Json::Value* invalid) const;
+  /** A simple way to update a specific setting.
+   */
+  Value& operator[](std::string key);
+
   /** Called by ctor, but you can use this to reset settings_.
    * \pre 'settings' != NULL (but Json::null is fine)
    * \remark Defaults:
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 90b4fdb..b04b60a 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -1927,6 +1927,10 @@
   }
   return 0u == inv.size();
 }
+Value& CharReaderBuilder::operator[](std::string key)
+{
+  return settings_[key];
+}
 // static
 void CharReaderBuilder::strictMode(Json::Value* settings)
 {
diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
index 9dbe53e..69323df 100644
--- a/src/lib_json/json_writer.cpp
+++ b/src/lib_json/json_writer.cpp
@@ -1122,6 +1122,10 @@
   }
   return 0u == inv.size();
 }
+Value& StreamWriterBuilder::operator[](std::string key)
+{
+  return settings_[key];
+}
 // static
 void StreamWriterBuilder::setDefaults(Json::Value* settings)
 {
diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp
index 3a32519..69ecae3 100644
--- a/src/test_lib_json/main.cpp
+++ b/src/test_lib_json/main.cpp
@@ -2182,7 +2182,7 @@
     Json::CharReaderBuilder rb;
     JSONTEST_ASSERT_EQUAL(false, rb.settings_.isMember("foo"));
     JSONTEST_ASSERT_EQUAL(true, rb.validate(&errs));
-    rb.settings_["foo"] = "bar";
+    rb["foo"] = "bar";
     JSONTEST_ASSERT_EQUAL(true, rb.settings_.isMember("foo"));
     JSONTEST_ASSERT_EQUAL(false, rb.validate(&errs));
   }
@@ -2191,7 +2191,7 @@
     Json::StreamWriterBuilder wb;
     JSONTEST_ASSERT_EQUAL(false, wb.settings_.isMember("foo"));
     JSONTEST_ASSERT_EQUAL(true, wb.validate(&errs));
-    wb.settings_["foo"] = "bar";
+    wb["foo"] = "bar";
     JSONTEST_ASSERT_EQUAL(true, wb.settings_.isMember("foo"));
     JSONTEST_ASSERT_EQUAL(false, wb.validate(&errs));
   }