diff options
| author | Peng Huang <shawn.p.huang@gmail.com> | 2009-12-28 21:22:51 +0800 |
|---|---|---|
| committer | Peng Huang <shawn.p.huang@gmail.com> | 2010-01-01 19:10:08 +0800 |
| commit | ccf8268c2e532dd89c19ad3dd6b92aef562c1e66 (patch) | |
| tree | 50d27931688f62bbe4514a6657a380cff36630d0 /src | |
| parent | 5ddd4d2ce16ddd812762db37bd13907c0ed7b604 (diff) | |
| download | ibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.tar.gz ibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.tar.xz ibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.zip | |
Reimplement operator<< (const gunichar *wstr)
Diffstat (limited to 'src')
| -rw-r--r-- | src/String.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/String.h b/src/String.h index 710f0b8..e565374 100644 --- a/src/String.h +++ b/src/String.h @@ -10,6 +10,7 @@ namespace PY { class String : public std::string { public: String () : std::string () {} + String (const gchar *str) : std::string (str) {} String (gint len) : std::string () {} String & printf (const gchar *fmt, ...) { gchar *str; @@ -76,14 +77,23 @@ public: return *this; } - String & operator<< (const gchar * str) { + String & operator<< (const gchar *str) { append (str); return *this; } String & operator << (const gunichar *wstr) { - for (gint i = 0; wstr[i] != 0; i++) - operator << (wstr[i]); + gchar *str; + GError *error; + str = g_ucs4_to_utf8 (wstr, -1, NULL, NULL, &error); + if (str == NULL) { + g_warning ("convert ucs4 to utf8 failed: %s", error->message); + g_error_free (error); + } + else { + append (str); + g_free (str); + } return *this; } |
