1 /* 2 ****************************************************************************** 3 * 4 * Copyright (C) 2015, International Business Machines 5 * Corporation and others. All Rights Reserved. 6 * 7 ****************************************************************************** 8 * 9 * File: cstr.h 10 */ 11 12 #ifndef CSTR_H 13 #define CSTR_H 14 15 #include "unicode/unistr.h" 16 #include "unicode/uobject.h" 17 #include "unicode/utypes.h" 18 19 #include "charstr.h" 20 21 /** 22 * ICU-internal class CStr, a small helper class to facilitate passing UnicodStrings 23 * to functions needing (const char *) strings, such as printf(). 24 * 25 * It is intended primarily for use in debugging or in tests. Uses platform 26 * default code page conversion, which will do the best job possible, 27 * but may be lossy, depending on the platform. 28 * 29 * Example Usage: 30 * UnicodeString s = whatever; 31 * printf("%s", CStr(s)()); 32 * 33 * The explicit call to the CStr() constructor creates a temporary object. 34 * Operator () on the temporary object returns a (const char *) pointer. 35 * The lifetime of the (const char *) data is that of the temporary object, 36 * which works well when passing it as a parameter to another function, such as printf. 37 */ 38 39 U_NAMESPACE_BEGIN 40 41 class U_COMMON_API CStr : public UMemory { 42 public: 43 CStr(const UnicodeString &in); 44 ~CStr(); 45 const char * operator ()() const; 46 47 private: 48 CharString s; 49 CStr(const CStr &other); // Forbid copying of this class. 50 CStr &operator =(const CStr &other); // Forbid assignment. 51 }; 52 53 U_NAMESPACE_END 54 55 #endif 56