summaryrefslogtreecommitdiffstats
path: root/src/String.h
diff options
context:
space:
mode:
authorPeng Huang <shawn.p.huang@gmail.com>2009-12-28 21:22:51 +0800
committerPeng Huang <shawn.p.huang@gmail.com>2010-01-01 19:10:08 +0800
commitccf8268c2e532dd89c19ad3dd6b92aef562c1e66 (patch)
tree50d27931688f62bbe4514a6657a380cff36630d0 /src/String.h
parent5ddd4d2ce16ddd812762db37bd13907c0ed7b604 (diff)
downloadibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.tar.gz
ibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.tar.xz
ibus-libpinyin-ccf8268c2e532dd89c19ad3dd6b92aef562c1e66.zip
Reimplement operator<< (const gunichar *wstr)
Diffstat (limited to 'src/String.h')
-rw-r--r--src/String.h16
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;
}