| // © 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 substitute |
| * '?' 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) = delete; // Forbid copying of this class. |
| CStr &operator =(const CStr &other) = delete; // Forbid assignment. |
| }; |
| |
| U_NAMESPACE_END |
| |
| #endif |