A wide string class suitable for unicode. More...
#include <tstring.h>
Public Types | |
enum | Type { Latin1 = 0 , UTF16 = 1 , UTF16BE = 2 , UTF8 = 3 , UTF16LE = 4 } |
Public Member Functions | |
String () | |
String (const String &s) | |
String (const std::string &s, Type t=Latin1) | |
String (const std::wstring &s) | |
String (const std::wstring &s, Type t) | |
String (const wchar_t *s) | |
String (const wchar_t *s, Type t) | |
String (char c, Type t=Latin1) | |
String (wchar_t c, Type t=Latin1) | |
String (const char *s, Type t=Latin1) | |
String (const ByteVector &v, Type t=Latin1) | |
~String () | |
std::string | to8Bit (bool unicode=false) const |
std::wstring | toWString () const |
const char * | toCString (bool unicode=false) const |
const wchar_t * | toCWString () const |
Iterator | begin () |
ConstIterator | begin () const |
ConstIterator | cbegin () const |
Iterator | end () |
ConstIterator | end () const |
ConstIterator | cend () const |
int | find (const String &s, int offset=0) const |
int | rfind (const String &s, int offset=-1) const |
StringList | split (const String &separator=" ") const |
bool | startsWith (const String &s) const |
String | substr (unsigned int position, unsigned int n=0xffffffff) const |
String & | append (const String &s) |
String & | clear () |
String | upper () const |
unsigned int | size () const |
unsigned int | length () const |
bool | isEmpty () const |
ByteVector | data (Type t) const |
int | toInt (bool *ok=nullptr) const |
String | stripWhiteSpace () const |
bool | isLatin1 () const |
bool | isAscii () const |
wchar_t & | operator[] (int i) |
const wchar_t & | operator[] (int i) const |
bool | operator== (const String &s) const |
bool | operator!= (const String &s) const |
bool | operator== (const char *s) const |
bool | operator!= (const char *s) const |
bool | operator== (const wchar_t *s) const |
bool | operator!= (const wchar_t *s) const |
String & | operator+= (const String &s) |
String & | operator+= (const wchar_t *s) |
String & | operator+= (const char *s) |
String & | operator+= (wchar_t c) |
String & | operator+= (char c) |
String & | operator= (const String &s) |
String & | operator= (const std::string &s) |
String & | operator= (const std::wstring &s) |
String & | operator= (const wchar_t *s) |
String & | operator= (char c) |
String & | operator= (wchar_t c) |
String & | operator= (const char *s) |
String & | operator= (const ByteVector &v) |
void | swap (String &s) noexcept |
bool | operator< (const String &s) const |
Static Public Member Functions | |
static String | number (int n) |
static String | fromLongLong (long long n) |
Protected Member Functions | |
void | detach () |
Related Functions | |
(Note that these are not member functions.) | |
#define | QStringToTString(s) TagLib::String((s).utf8().data(), TagLib::String::UTF8) |
#define | TStringToQString(s) QString::fromUtf8((s).toCString(true)) |
TAGLIB_EXPORT TagLib::String | operator+ (const TagLib::String &s1, const TagLib::String &s2) |
TAGLIB_EXPORT TagLib::String | operator+ (const char *s1, const TagLib::String &s2) |
TAGLIB_EXPORT TagLib::String | operator+ (const TagLib::String &s1, const char *s2) |
TAGLIB_EXPORT std::ostream & | operator<< (std::ostream &s, const TagLib::String &str) |
A wide string class suitable for unicode.
This is an implicitly shared wide string. For storage it uses std::wstring, but as this is an implementation detail this of course could change. Strings are stored internally as UTF-16 (without BOM/CPU byte order)
The use of implicit sharing means that copying a string is cheap, the only cost comes into play when the copy is modified. Prior to that the string just has a pointer to the data of the parent String. This also makes this class suitable as a function return type.
In addition to adding implicit sharing, this class keeps track of possible encodings, which are those supported by the ID3v2 standard.
enum TagLib::String::Type |
The four types of string encodings supported by the ID3v2 specification. (plus UTF16LE). ID3v1 is assumed to be Latin1 and Ogg Vorbis comments use UTF8.
Enumerator | |
---|---|
Latin1 | ISO-8859-1, or Latin1 encoding. 8 bit characters. |
UTF16 | UTF16 with a byte order mark. 16 bit characters. |
UTF16BE | UTF16 big endian. 16 bit characters. This is the encoding used internally by TagLib. |
UTF8 | UTF8 encoding. Characters are usually 8 bits but can be up to 32. |
UTF16LE | UTF16 little endian. 16 bit characters. |
TagLib::String::String | ( | ) |
Constructs an empty String.
TagLib::String::String | ( | const String & | s | ) |
Make a shallow, implicitly shared, copy of s. Because this is implicitly shared, this method is lightweight and suitable for pass-by-value usage.
Makes a deep copy of the data in s.
TagLib::String::String | ( | const std::wstring & | s | ) |
Makes a deep copy of the data in s, which are in CPU byte order.
TagLib::String::String | ( | const std::wstring & | s, |
Type | t | ||
) |
Makes a deep copy of the data in s, which are in byte order t.
TagLib::String::String | ( | const wchar_t * | s | ) |
Makes a deep copy of the data in s, which are in CPU byte order.
TagLib::String::String | ( | const wchar_t * | s, |
Type | t | ||
) |
Makes a deep copy of the data in s, which are in byte order t.
Makes a deep copy of the data in c.
Makes a deep copy of the data in s.
TagLib::String::String | ( | const ByteVector & | v, |
Type | t = Latin1 |
||
) |
Makes a deep copy of the data in v.
TagLib::String::~String | ( | ) |
Destroys this String instance.
Append s to the current string and return a reference to the current string.
Iterator TagLib::String::begin | ( | ) |
Returns an iterator pointing to the beginning of the string.
ConstIterator TagLib::String::begin | ( | ) | const |
Returns a const iterator pointing to the beginning of the string.
ConstIterator TagLib::String::cbegin | ( | ) | const |
Returns a const iterator pointing to the beginning of the string.
ConstIterator TagLib::String::cend | ( | ) | const |
Returns a const iterator pointing to the end of the string (the position after the last character).
String & TagLib::String::clear | ( | ) |
Clears the string.
ByteVector TagLib::String::data | ( | Type | t | ) | const |
Returns a ByteVector containing the string's data. If t is Latin1 or UTF8, this will return a vector of 8 bit characters, otherwise it will use 16 bit characters.
|
protected |
If this String is being shared via implicit sharing, do a deep copy of the data and separate from the shared members. This should be called by all non-const subclass members.
Iterator TagLib::String::end | ( | ) |
Returns an iterator pointing to the end of the string (the position after the last character).
ConstIterator TagLib::String::end | ( | ) | const |
Returns a const iterator pointing to the end of the string (the position after the last character).
int TagLib::String::find | ( | const String & | s, |
int | offset = 0 |
||
) | const |
Finds the first occurrence of pattern s in this string starting from offset. If the pattern is not found, -1 is returned.
|
static |
Converts the base-10 integer n to a string.
bool TagLib::String::isAscii | ( | ) | const |
Returns true
if the file only uses characters required by (7-bit) ASCII.
bool TagLib::String::isEmpty | ( | ) | const |
Returns true
if the string is empty.
bool TagLib::String::isLatin1 | ( | ) | const |
Returns true
if the file only uses characters required by Latin1.
unsigned int TagLib::String::length | ( | ) | const |
Returns the length of the string. Equivalent to size().
|
static |
Converts the base-10 integer n to a string.
bool TagLib::String::operator!= | ( | const char * | s | ) | const |
Compares each character of the String with each character of s and returns false
if the strings match.
bool TagLib::String::operator!= | ( | const String & | s | ) | const |
Compares each character of the String with each character of s and returns false
if the strings match.
bool TagLib::String::operator!= | ( | const wchar_t * | s | ) | const |
Compares each character of the String with each character of s and returns false
if the strings match.
bool TagLib::String::operator< | ( | const String & | s | ) | const |
To be able to use this class in a Map, this operator needed to be implemented. Returns true
if s is less than this string in a byte-wise comparison.
String & TagLib::String::operator= | ( | char | c | ) |
Performs a deep copy of the data in s.
String & TagLib::String::operator= | ( | const ByteVector & | v | ) |
Performs a deep copy of the data in v.
String & TagLib::String::operator= | ( | const char * | s | ) |
Performs a deep copy of the data in s.
String & TagLib::String::operator= | ( | const std::string & | s | ) |
Performs a deep copy of the data in s.
String & TagLib::String::operator= | ( | const std::wstring & | s | ) |
Performs a deep copy of the data in s.
Performs a shallow, implicitly shared, copy of s, overwriting the String's current data.
String & TagLib::String::operator= | ( | const wchar_t * | s | ) |
Performs a deep copy of the data in s.
String & TagLib::String::operator= | ( | wchar_t | c | ) |
Performs a deep copy of the data in s.
bool TagLib::String::operator== | ( | const char * | s | ) | const |
Compares each character of the String with each character of s and returns true
if the strings match.
bool TagLib::String::operator== | ( | const String & | s | ) | const |
Compares each character of the String with each character of s and returns true
if the strings match.
bool TagLib::String::operator== | ( | const wchar_t * | s | ) | const |
Compares each character of the String with each character of s and returns true
if the strings match.
wchar_t & TagLib::String::operator[] | ( | int | i | ) |
Returns a reference to the character at position i.
const wchar_t & TagLib::String::operator[] | ( | int | i | ) | const |
Returns a const reference to the character at position i.
int TagLib::String::rfind | ( | const String & | s, |
int | offset = -1 |
||
) | const |
Finds the last occurrence of pattern s in this string, searched backwards, either from the end of the string or starting from offset. If the pattern is not found, -1 is returned.
unsigned int TagLib::String::size | ( | ) | const |
Returns the size of the string.
StringList TagLib::String::split | ( | const String & | separator = " " | ) | const |
Splits the string on each occurrence of separator.
bool TagLib::String::startsWith | ( | const String & | s | ) | const |
Returns true
if the string starts with the substring s.
String TagLib::String::stripWhiteSpace | ( | ) | const |
Returns a string with the leading and trailing whitespace stripped.
String TagLib::String::substr | ( | unsigned int | position, |
unsigned int | n = 0xffffffff |
||
) | const |
Extract a substring from this string starting at position and continuing for n characters.
|
noexcept |
Exchanges the content of the String with the content of s.
std::string TagLib::String::to8Bit | ( | bool | unicode = false | ) | const |
Returns a deep copy of this String as an std::string
. The returned string is encoded in UTF8 if unicode is true
, otherwise Latin1.
const char * TagLib::String::toCString | ( | bool | unicode = false | ) | const |
Creates and returns a standard C-style (null-terminated) version of this String. The returned string is encoded in UTF8 if unicode is true
, otherwise Latin1.
The returned string is still owned by this String and should not be deleted by the user.
The returned pointer remains valid until this String instance is destroyed or toCString() is called again.
const wchar_t * TagLib::String::toCWString | ( | ) | const |
Returns a standard C-style (null-terminated) wide character version of this String. The returned string is encoded in UTF-16 (without BOM/CPU byte order), not UTF-32 even if wchar_t
is 32-bit wide.
The returned string is still owned by this String and should not be deleted by the user.
The returned pointer remains valid until this String instance is destroyed or any other method of this String is called.
int TagLib::String::toInt | ( | bool * | ok = nullptr | ) | const |
Convert the string to an integer.
If the conversion was successful, it sets the value of *ok to true
and returns the integer. Otherwise it sets *ok to false
and the result is undefined.
std::wstring TagLib::String::toWString | ( | ) | const |
Returns a deep copy of this String as a wstring
. The returned string is encoded in UTF-16 (without BOM/CPU byte order), not UTF-32 even if wchar_t
is 32-bit wide.
String TagLib::String::upper | ( | ) | const |
Returns an upper case version of the string.
|
related |
Concatenates s1 and s2 and returns the result as a string.
|
related |
Concatenates s1 and s2 and returns the result as a string.
|
related |
Concatenates s1 and s2 and returns the result as a string.
|
related |
Send the string to an output stream.
|
related |
Converts a QString to a TagLib::String without a requirement to link to Qt.
|
related |
Converts a TagLib::String to a QString without a requirement to link to Qt.