فهرست منبع

Add `operator<<(std::ostream&, const JsonString&)`

Benoit Blanchon 4 سال پیش
والد
کامیت
51937778dd
2فایلهای تغییر یافته به همراه19 افزوده شده و 0 حذف شده
  1. 8 0
      extras/tests/Misc/JsonString.cpp
  2. 11 0
      src/ArduinoJson/Strings/String.hpp

+ 8 - 0
extras/tests/Misc/JsonString.cpp

@@ -5,6 +5,8 @@
 #include <ArduinoJson.h>
 #include <catch.hpp>
 
+#include <sstream>
+
 TEST_CASE("JsonString") {
   SECTION("Default constructor creates a null JsonString") {
     JsonString s;
@@ -74,4 +76,10 @@ TEST_CASE("JsonString") {
     CHECK(a == b);
     CHECK_FALSE(a != b);
   }
+
+  SECTION("std::stream") {
+    std::stringstream ss;
+    ss << JsonString("hello world!");
+    CHECK(ss.str() == "hello world!");
+  }
 }

+ 11 - 0
src/ArduinoJson/Strings/String.hpp

@@ -6,6 +6,10 @@
 
 #include <ArduinoJson/Misc/SafeBoolIdiom.hpp>
 
+#if ARDUINOJSON_ENABLE_STD_STREAM
+#  include <ostream>
+#endif
+
 namespace ARDUINOJSON_NAMESPACE {
 
 class String : public SafeBoolIdom<String> {
@@ -61,6 +65,13 @@ class String : public SafeBoolIdom<String> {
     return strcmp(lhs._data, rhs._data) != 0;
   }
 
+#if ARDUINOJSON_ENABLE_STD_STREAM
+  friend std::ostream& operator<<(std::ostream& lhs, const String& rhs) {
+    lhs.write(rhs.c_str(), static_cast<std::streamsize>(rhs.size()));
+    return lhs;
+  }
+#endif
+
  private:
   const char* _data;
   size_t _size;