From 62d55223b26d7549d8583866961a8f14177fc169 Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Tue, 11 Jun 2013 00:09:37 +0900 Subject: [PATCH] Added conversion from String to const wchar_t* --- taglib/toolkit/tstring.cpp | 5 +++++ taglib/toolkit/tstring.h | 11 ++++++++++- tests/test_string.cpp | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp index d28855b8..c83118d1 100644 --- a/taglib/toolkit/tstring.cpp +++ b/taglib/toolkit/tstring.cpp @@ -312,6 +312,11 @@ const char *String::toCString(bool unicode) const return d->cstring.c_str(); } +const wchar_t *String::toCWString() const +{ + return d->data.c_str(); +} + String::Iterator String::begin() { return d->data.begin(); diff --git a/taglib/toolkit/tstring.h b/taglib/toolkit/tstring.h index d353bcd9..569650eb 100644 --- a/taglib/toolkit/tstring.h +++ b/taglib/toolkit/tstring.h @@ -205,7 +205,16 @@ namespace TagLib { * where memory is critical. */ const char *toCString(bool unicode = false) const; - + + /*! + * Returns a pointer to the wide char version of the TagLib string. The string + * is encoded in UTF-16(without BOM/CPU byte order). + * + * /note This returns a pointer to the String's internal data without any + * conversions. + */ + const wchar_t *toCWString() const; + /*! * Returns an iterator pointing to the beginning of the string. */ diff --git a/tests/test_string.cpp b/tests/test_string.cpp index f2976919..a815a0b4 100644 --- a/tests/test_string.cpp +++ b/tests/test_string.cpp @@ -72,6 +72,9 @@ public: String unicode2(unicode.to8Bit(true), String::UTF8); CPPUNIT_ASSERT(unicode == unicode2); + String unicode3(L"\u65E5\u672C\u8A9E"); + CPPUNIT_ASSERT(*(unicode3.toCWString() + 1) == L'\u672C'); + CPPUNIT_ASSERT(strcmp(String::number(0).toCString(), "0") == 0); CPPUNIT_ASSERT(strcmp(String::number(12345678).toCString(), "12345678") == 0); CPPUNIT_ASSERT(strcmp(String::number(-12345678).toCString(), "-12345678") == 0);