remove stringstream dependency
This commit is contained in:
		
							parent
							
								
									8efbf8d7bb
								
							
						
					
					
						commit
						64acb42aa7
					
				
					 3 changed files with 14 additions and 22 deletions
				
			
		|  | @ -6,12 +6,10 @@ | |||
| #include <cmath> // ldexp
 | ||||
| #include <cstddef> // size_t
 | ||||
| #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
 | ||||
| #include <cstdio> // snprinft
 | ||||
| #include <cstring> // memcpy
 | ||||
| #include <iomanip> // setw, setfill
 | ||||
| #include <ios> // hex
 | ||||
| #include <iterator> // back_inserter
 | ||||
| #include <limits> // numeric_limits
 | ||||
| #include <sstream> // stringstream
 | ||||
| #include <string> // char_traits, string
 | ||||
| #include <utility> // make_pair, move
 | ||||
| 
 | ||||
|  | @ -1665,9 +1663,9 @@ class binary_reader | |||
|     */ | ||||
|     std::string get_token_string() const | ||||
|     { | ||||
|         std::stringstream ss; | ||||
|         ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; | ||||
|         return ss.str(); | ||||
|         char cr[3]; | ||||
|         snprintf(cr, 3, "%.2X", current); | ||||
|         return std::string{cr}; | ||||
|     } | ||||
| 
 | ||||
|   private: | ||||
|  |  | |||
|  | @ -3,10 +3,8 @@ | |||
| #include <clocale> // localeconv
 | ||||
| #include <cstddef> // size_t
 | ||||
| #include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
 | ||||
| #include <cstdio> // snprintf
 | ||||
| #include <initializer_list> // initializer_list
 | ||||
| #include <ios> // hex, uppercase
 | ||||
| #include <iomanip> // setw, setfill
 | ||||
| #include <sstream> // stringstream
 | ||||
| #include <string> // char_traits, string
 | ||||
| #include <vector> // vector
 | ||||
| 
 | ||||
|  | @ -1174,10 +1172,9 @@ scan_number_done: | |||
|             if ('\x00' <= c and c <= '\x1F') | ||||
|             { | ||||
|                 // escape control characters
 | ||||
|                 std::stringstream ss; | ||||
|                 ss << "<U+" << std::setw(4) << std::uppercase << std::setfill('0') | ||||
|                    << std::hex << static_cast<int>(c) << ">"; | ||||
|                 result += ss.str(); | ||||
|                 char cs[9]; | ||||
|                 snprintf(cs, 9, "<U+%.4X>", c); | ||||
|                 result += cs; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|  |  | |||
|  | @ -9,11 +9,8 @@ | |||
| #include <cstddef> // size_t, ptrdiff_t
 | ||||
| #include <cstdint> // uint8_t
 | ||||
| #include <cstdio> // snprintf
 | ||||
| #include <iomanip> // setfill
 | ||||
| #include <iterator> // next
 | ||||
| #include <limits> // numeric_limits
 | ||||
| #include <string> // string
 | ||||
| #include <sstream> // stringstream
 | ||||
| #include <type_traits> // is_same
 | ||||
| 
 | ||||
| #include <nlohmann/detail/exceptions.hpp> | ||||
|  | @ -389,9 +386,9 @@ class serializer | |||
| 
 | ||||
|                 case UTF8_REJECT:  // decode found invalid UTF-8 byte
 | ||||
|                 { | ||||
|                     std::stringstream ss; | ||||
|                     ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast<int>(byte); | ||||
|                     JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); | ||||
|                     std::string sn(3, '\0'); | ||||
|                     snprintf(&sn[0], sn.size(), "%.2X", byte); | ||||
|                     JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn)); | ||||
|                 } | ||||
| 
 | ||||
|                 default:  // decode found yet incomplete multi-byte code point
 | ||||
|  | @ -417,9 +414,9 @@ class serializer | |||
|         else | ||||
|         { | ||||
|             // we finish reading, but do not accept: string was incomplete
 | ||||
|             std::stringstream ss; | ||||
|             ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast<int>(static_cast<uint8_t>(s.back())); | ||||
|             JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); | ||||
|             std::string sn(3,'\0'); | ||||
|             snprintf(&sn[0], sn.size(), "%.2X", s.back()); | ||||
|             JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue