![]() |
Bitcoin Core 22.99.0
P2P Digital Currency
|
#include <attributes.h>#include <span.h>#include <util/string.h>#include <charconv>#include <cstdint>#include <iterator>#include <optional>#include <string>#include <vector>Go to the source code of this file.
Enumerations | |
| enum | SafeChars { SAFE_CHARS_DEFAULT , SAFE_CHARS_UA_COMMENT , SAFE_CHARS_FILENAME , SAFE_CHARS_URI } |
| Utilities for converting data from/to strings. More... | |
Functions | |
| std::string | SanitizeString (const std::string &str, int rule=SAFE_CHARS_DEFAULT) |
| Remove unsafe chars. More... | |
| std::vector< unsigned char > | ParseHex (const char *psz) |
| std::vector< unsigned char > | ParseHex (const std::string &str) |
| signed char | HexDigit (char c) |
| bool | IsHex (const std::string &str) |
| bool | IsHexNumber (const std::string &str) |
| Return true if the string is a hex number, optionally prefixed with "0x". More... | |
| std::vector< unsigned char > | DecodeBase64 (const char *p, bool *pf_invalid=nullptr) |
| std::string | DecodeBase64 (const std::string &str, bool *pf_invalid=nullptr) |
| std::string | EncodeBase64 (Span< const unsigned char > input) |
| std::string | EncodeBase64 (const std::string &str) |
| std::vector< unsigned char > | DecodeBase32 (const char *p, bool *pf_invalid=nullptr) |
| std::string | DecodeBase32 (const std::string &str, bool *pf_invalid=nullptr) |
| std::string | EncodeBase32 (Span< const unsigned char > input, bool pad=true) |
| Base32 encode. More... | |
| std::string | EncodeBase32 (const std::string &str, bool pad=true) |
| Base32 encode. More... | |
| void | SplitHostPort (std::string in, uint16_t &portOut, std::string &hostOut) |
| template<typename T > | |
| T | LocaleIndependentAtoi (const std::string &str) |
| constexpr bool | IsDigit (char c) |
| Tests if the given character is a decimal digit. More... | |
| constexpr bool | IsSpace (char c) noexcept |
| Tests if the given character is a whitespace character. More... | |
| template<typename T > | |
| std::optional< T > | ToIntegral (const std::string &str) |
| Convert string to integral type T. More... | |
| bool | ParseInt32 (const std::string &str, int32_t *out) |
| Convert string to signed 32-bit integer with strict parse error feedback. More... | |
| bool | ParseInt64 (const std::string &str, int64_t *out) |
| Convert string to signed 64-bit integer with strict parse error feedback. More... | |
| bool | ParseUInt8 (const std::string &str, uint8_t *out) |
| Convert decimal string to unsigned 8-bit integer with strict parse error feedback. More... | |
| bool | ParseUInt16 (const std::string &str, uint16_t *out) |
| Convert decimal string to unsigned 16-bit integer with strict parse error feedback. More... | |
| bool | ParseUInt32 (const std::string &str, uint32_t *out) |
| Convert decimal string to unsigned 32-bit integer with strict parse error feedback. More... | |
| bool | ParseUInt64 (const std::string &str, uint64_t *out) |
| Convert decimal string to unsigned 64-bit integer with strict parse error feedback. More... | |
| std::string | HexStr (const Span< const uint8_t > s) |
| Convert a span of bytes to a lower-case hexadecimal string. More... | |
| std::string | HexStr (const Span< const char > s) |
| std::string | FormatParagraph (const std::string &in, size_t width=79, size_t indent=0) |
| Format a paragraph of text to a fixed width, adding spaces for indentation to any added line. More... | |
| template<typename T > | |
| bool | TimingResistantEqual (const T &a, const T &b) |
| Timing-attack-resistant comparison. More... | |
| bool | ParseFixedPoint (const std::string &val, int decimals, int64_t *amount_out) |
| Parse number as fixed point according to JSON number syntax. More... | |
| template<int frombits, int tobits, bool pad, typename O , typename I > | |
| bool | ConvertBits (const O &outfn, I it, I end) |
| Convert from one power-of-2 number base to another. More... | |
| constexpr char | ToLower (char c) |
| Converts the given character to its lowercase equivalent. More... | |
| std::string | ToLower (const std::string &str) |
| Returns the lowercase equivalent of the given string. More... | |
| constexpr char | ToUpper (char c) |
| Converts the given character to its uppercase equivalent. More... | |
| std::string | ToUpper (const std::string &str) |
| Returns the uppercase equivalent of the given string. More... | |
| std::string | Capitalize (std::string str) |
| Capitalizes the first character of the given string. More... | |
| enum SafeChars |
Utilities for converting data from/to strings.
Used by SanitizeString()
| Enumerator | |
|---|---|
| SAFE_CHARS_DEFAULT | The full set of allowed chars. |
| SAFE_CHARS_UA_COMMENT | BIP-0014 subset. |
| SAFE_CHARS_FILENAME | Chars allowed in filenames. |
| SAFE_CHARS_URI | Chars allowed in URIs (RFC 3986) |
Definition at line 24 of file strencodings.h.
| std::string Capitalize | ( | std::string | str | ) |
Capitalizes the first character of the given string.
This function is locale independent. It only converts lowercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
| [in] | str | the string to capitalize. |
Definition at line 509 of file strencodings.cpp.
| bool ConvertBits | ( | const O & | outfn, |
| I | it, | ||
| I | end | ||
| ) |
Convert from one power-of-2 number base to another.
Definition at line 223 of file strencodings.h.
| std::vector< unsigned char > DecodeBase32 | ( | const char * | p, |
| bool * | pf_invalid = nullptr |
||
| ) |
| std::string DecodeBase32 | ( | const std::string & | str, |
| bool * | pf_invalid = nullptr |
||
| ) |
| std::vector< unsigned char > DecodeBase64 | ( | const char * | p, |
| bool * | pf_invalid = nullptr |
||
| ) |
| std::string DecodeBase64 | ( | const std::string & | str, |
| bool * | pf_invalid = nullptr |
||
| ) |
| std::string EncodeBase32 | ( | const std::string & | str, |
| bool | pad = true |
||
| ) |
Base32 encode.
If pad is true, then the output will be padded with '=' so that its length is a multiple of 8.
Definition at line 220 of file strencodings.cpp.
| std::string EncodeBase32 | ( | Span< const unsigned char > | input, |
| bool | pad = true |
||
| ) |
Base32 encode.
If pad is true, then the output will be padded with '=' so that its length is a multiple of 8.
Definition at line 205 of file strencodings.cpp.
| std::string EncodeBase64 | ( | const std::string & | str | ) |
| std::string EncodeBase64 | ( | Span< const unsigned char > | input | ) |
Definition at line 130 of file strencodings.cpp.
| std::string FormatParagraph | ( | const std::string & | in, |
| size_t | width = 79, |
||
| size_t | indent = 0 |
||
| ) |
Format a paragraph of text to a fixed width, adding spaces for indentation to any added line.
Definition at line 335 of file strencodings.cpp.
| signed char HexDigit | ( | char | c | ) |
|
inline |
| std::string HexStr | ( | const Span< const uint8_t > | s | ) |
Convert a span of bytes to a lower-case hexadecimal string.
Definition at line 516 of file strencodings.cpp.
|
constexpr |
Tests if the given character is a decimal digit.
| [in] | c | character to test |
Definition at line 105 of file strencodings.h.
| bool IsHex | ( | const std::string & | str | ) |
Definition at line 60 of file strencodings.cpp.
| bool IsHexNumber | ( | const std::string & | str | ) |
Return true if the string is a hex number, optionally prefixed with "0x".
Definition at line 70 of file strencodings.cpp.
|
inlineconstexprnoexcept |
Tests if the given character is a whitespace character.
The whitespace characters are: space, form-feed ('\f'), newline ('
'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v').
This function is locale independent. Under the C locale this function gives the same result as std::isspace.
| [in] | c | character to test |
Definition at line 121 of file strencodings.h.
| bool ParseFixedPoint | ( | const std::string & | val, |
| int | decimals, | ||
| int64_t * | amount_out | ||
| ) |
Parse number as fixed point according to JSON number syntax.
See https://json.org/number.gif
Definition at line 403 of file strencodings.cpp.
| std::vector< unsigned char > ParseHex | ( | const char * | psz | ) |
Definition at line 83 of file strencodings.cpp.
| std::vector< unsigned char > ParseHex | ( | const std::string & | str | ) |
| bool ParseInt32 | ( | const std::string & | str, |
| int32_t * | out | ||
| ) |
Convert string to signed 32-bit integer with strict parse error feedback.
Definition at line 305 of file strencodings.cpp.
| bool ParseInt64 | ( | const std::string & | str, |
| int64_t * | out | ||
| ) |
Convert string to signed 64-bit integer with strict parse error feedback.
Definition at line 310 of file strencodings.cpp.
| bool ParseUInt16 | ( | const std::string & | str, |
| uint16_t * | out | ||
| ) |
Convert decimal string to unsigned 16-bit integer with strict parse error feedback.
Definition at line 320 of file strencodings.cpp.
| bool ParseUInt32 | ( | const std::string & | str, |
| uint32_t * | out | ||
| ) |
Convert decimal string to unsigned 32-bit integer with strict parse error feedback.
Definition at line 325 of file strencodings.cpp.
| bool ParseUInt64 | ( | const std::string & | str, |
| uint64_t * | out | ||
| ) |
Convert decimal string to unsigned 64-bit integer with strict parse error feedback.
Definition at line 330 of file strencodings.cpp.
| bool ParseUInt8 | ( | const std::string & | str, |
| uint8_t * | out | ||
| ) |
Convert decimal string to unsigned 8-bit integer with strict parse error feedback.
Definition at line 315 of file strencodings.cpp.
| std::string SanitizeString | ( | const std::string & | str, |
| int | rule = SAFE_CHARS_DEFAULT |
||
| ) |
Remove unsafe chars.
Safe chars chosen to allow simple messages/URLs/email addresses, but avoid anything even possibly remotely dangerous like & or >
| [in] | str | The string to sanitize |
| [in] | rule | The set of safe chars to choose (default: least restrictive) |
Definition at line 26 of file strencodings.cpp.
| void SplitHostPort | ( | std::string | in, |
| uint16_t & | portOut, | ||
| std::string & | hostOut | ||
| ) |
Definition at line 109 of file strencodings.cpp.
Timing-attack-resistant comparison.
Takes time proportional to length of first argument.
Definition at line 205 of file strencodings.h.
Convert string to integral type T.
Leading whitespace, a leading +, or any trailing character fail the parsing. The required format expressed as regex is -?[0-9]+. The minus sign is only permitted for signed integer types.
Definition at line 134 of file strencodings.h.
|
constexpr |
Converts the given character to its lowercase equivalent.
This function is locale independent. It only converts uppercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
| [in] | c | the character to convert to lowercase. |
Definition at line 255 of file strencodings.h.
| std::string ToLower | ( | const std::string & | str | ) |
Returns the lowercase equivalent of the given string.
This function is locale independent. It only converts uppercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
| [in] | str | the string to convert to lowercase. |
Definition at line 495 of file strencodings.cpp.
|
constexpr |
Converts the given character to its uppercase equivalent.
This function is locale independent. It only converts lowercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
| [in] | c | the character to convert to uppercase. |
Definition at line 281 of file strencodings.h.
| std::string ToUpper | ( | const std::string & | str | ) |
Returns the uppercase equivalent of the given string.
This function is locale independent. It only converts lowercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
| [in] | str | the string to convert to uppercase. |
Definition at line 502 of file strencodings.cpp.