Index: source/common/cstr.h |
diff --git a/source/common/cstr.h b/source/common/cstr.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..93b2e54c24f0ef3a8cdaf5a9d6d5fa75dea575aa |
--- /dev/null |
+++ b/source/common/cstr.h |
@@ -0,0 +1,60 @@ |
+// Copyright (C) 2016 and later: Unicode, Inc. and others. |
+// License & terms of use: http://www.unicode.org/copyright.html |
+/* |
+****************************************************************************** |
+* |
+* Copyright (C) 2016, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+* |
+****************************************************************************** |
+* |
+* File: cstr.h |
+*/ |
+ |
+#ifndef CSTR_H |
+#define CSTR_H |
+ |
+#include "unicode/unistr.h" |
+#include "unicode/uobject.h" |
+#include "unicode/utypes.h" |
+ |
+#include "charstr.h" |
+ |
+/** |
+ * ICU-internal class CStr, a small helper class to facilitate passing UnicodeStrings |
+ * to functions needing (const char *) strings, such as printf(). |
+ * |
+ * It is intended primarily for use in debugging or in tests. Uses platform |
+ * default code page conversion, which will do the best job possible, |
+ * but may be lossy, depending on the platform. |
+ * |
+ * If no other conversion is available, use invariant conversion and substitue |
+ * '?' for non-invariant characters. |
+ * |
+ * Example Usage: |
+ * UnicodeString s = whatever; |
+ * printf("%s", CStr(s)()); |
+ * |
+ * The explicit call to the CStr() constructor creates a temporary object. |
+ * Operator () on the temporary object returns a (const char *) pointer. |
+ * The lifetime of the (const char *) data is that of the temporary object, |
+ * which works well when passing it as a parameter to another function, such as printf. |
+ */ |
+ |
+U_NAMESPACE_BEGIN |
+ |
+class U_COMMON_API CStr : public UMemory { |
+ public: |
+ CStr(const UnicodeString &in); |
+ ~CStr(); |
+ const char * operator ()() const; |
+ |
+ private: |
+ CharString s; |
+ CStr(const CStr &other); // Forbid copying of this class. |
+ CStr &operator =(const CStr &other); // Forbid assignment. |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif |