diff options
author | crupest <crupest@outlook.com> | 2024-06-24 00:06:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2024-08-18 16:50:20 +0800 |
commit | 1b30150ab79ff1338f209a8ddb54b3dc60cfb599 (patch) | |
tree | 97e183587b293ecf768476da0edf3fdcf86e4543 /include/cru/common/String.h | |
parent | b756bf519cda0684ec46d0d9404cbc59741ec0cb (diff) | |
download | cru-1b30150ab79ff1338f209a8ddb54b3dc60cfb599.tar.gz cru-1b30150ab79ff1338f209a8ddb54b3dc60cfb599.tar.bz2 cru-1b30150ab79ff1338f209a8ddb54b3dc60cfb599.zip |
fix(SubProcess): fix pipe fs close, add tests.
NEED TEST: BufferStream, AutoReadStream, SubProcess.
Diffstat (limited to 'include/cru/common/String.h')
-rw-r--r-- | include/cru/common/String.h | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/include/cru/common/String.h b/include/cru/common/String.h index 5d9fc549..21a3db51 100644 --- a/include/cru/common/String.h +++ b/include/cru/common/String.h @@ -6,7 +6,6 @@ #include "StringToNumberConverter.h" #include "StringUtil.h" -#include <double-conversion/double-conversion.h> #include <filesystem> #include <initializer_list> #include <iterator> @@ -221,16 +220,14 @@ class CRU_BASE_API String { Index* processed_characters_count, unsigned flags, int base) const; int ParseToInt(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags, - int base = 0) const; + StringToNumberFlag flags = {}, int base = 0) const; long long ParseToLongLong(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags, - int base = 0) const; + StringToNumberFlag flags = {}, int base = 0) const; float ParseToFloat(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags) const; + StringToNumberFlag flags = {}) const; double ParseToDouble(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags) const; + StringToNumberFlag flags = {}) const; std::vector<float> ParseToFloatList(value_type separator = u' ') const; std::vector<double> ParseToDoubleList(value_type separator = u' ') const; @@ -261,6 +258,8 @@ class CRU_BASE_API String { Index capacity_ = 0; // always 1 smaller than real buffer size }; +std::ostream& CRU_BASE_API operator<<(std::ostream& os, const String& value); + class CRU_BASE_API StringView { public: using value_type = char16_t; @@ -357,23 +356,24 @@ class CRU_BASE_API StringView { template <typename TInteger> std::enable_if_t<std::is_signed_v<TInteger>, TInteger> ParseToInteger( - Index* processed_characters_count, unsigned flags, int base) const { - auto result = StringToIntegerConverterImpl(flags, base) - .Parse(data(), size(), processed_characters_count); + Index* processed_characters_count, StringToNumberFlag flags, + int base) const { + auto utf8_string = ToUtf8(); + auto result = StringToIntegerConverter(flags, base) + .Parse(utf8_string.data(), utf8_string.size(), + processed_characters_count); return result.negate ? -result.value : result.value; } int ParseToInt(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags, - int base = 0) const; + StringToNumberFlag flags = {}, int base = 0) const; long long ParseToLongLong(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags, - int base = 0) const; + StringToNumberFlag flags = {}, int base = 0) const; float ParseToFloat(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags) const; + StringToNumberFlag flags = {}) const; double ParseToDouble(Index* processed_characters_count = nullptr, - unsigned flags = StringToNumberFlags::kNoFlags) const; + StringToNumberFlag flags = {}) const; std::vector<float> ParseToFloatList(value_type separator = u' ') const; std::vector<double> ParseToDoubleList(value_type separator = u' ') const; |