ICU 77.1  77.1
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ustring.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (C) 1998-2014, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
8 *
9 * File ustring.h
10 *
11 * Modification History:
12 *
13 * Date Name Description
14 * 12/07/98 bertrand Creation.
15 ******************************************************************************
16 */
17 
18 #ifndef USTRING_H
19 #define USTRING_H
20 
21 #include "unicode/utypes.h"
22 #include "unicode/putil.h"
23 #include "unicode/uiter.h"
24 
30 #ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
31 # define UBRK_TYPEDEF_UBREAK_ITERATOR
33  typedef struct UBreakIterator UBreakIterator;
34 #endif
35 
92 U_CAPI int32_t U_EXPORT2
93 u_strlen(const UChar *s);
109 U_CAPI int32_t U_EXPORT2
110 u_countChar32(const UChar *s, int32_t length);
111 
130 U_CAPI UBool U_EXPORT2
131 u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number);
132 
143 U_CAPI UChar* U_EXPORT2
145  const UChar *src);
146 
161 U_CAPI UChar* U_EXPORT2
163  const UChar *src,
164  int32_t n);
165 
186 U_CAPI UChar * U_EXPORT2
187 u_strstr(const UChar *s, const UChar *substring);
188 
210 U_CAPI UChar * U_EXPORT2
211 u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
212 
230 U_CAPI UChar * U_EXPORT2
231 u_strchr(const UChar *s, UChar c);
232 
250 U_CAPI UChar * U_EXPORT2
251 u_strchr32(const UChar *s, UChar32 c);
252 
273 U_CAPI UChar * U_EXPORT2
274 u_strrstr(const UChar *s, const UChar *substring);
275 
297 U_CAPI UChar * U_EXPORT2
298 u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
299 
317 U_CAPI UChar * U_EXPORT2
318 u_strrchr(const UChar *s, UChar c);
319 
337 U_CAPI UChar * U_EXPORT2
338 u_strrchr32(const UChar *s, UChar32 c);
339 
352 U_CAPI UChar * U_EXPORT2
353 u_strpbrk(const UChar *string, const UChar *matchSet);
354 
368 U_CAPI int32_t U_EXPORT2
369 u_strcspn(const UChar *string, const UChar *matchSet);
370 
384 U_CAPI int32_t U_EXPORT2
385 u_strspn(const UChar *string, const UChar *matchSet);
386 
412 U_CAPI UChar * U_EXPORT2
414  const UChar *delim,
415  UChar **saveState);
416 
427 U_CAPI int32_t U_EXPORT2
428 u_strcmp(const UChar *s1,
429  const UChar *s2);
430 
442 U_CAPI int32_t U_EXPORT2
443 u_strcmpCodePointOrder(const UChar *s1, const UChar *s2);
444 
472 U_CAPI int32_t U_EXPORT2
473 u_strCompare(const UChar *s1, int32_t length1,
474  const UChar *s2, int32_t length2,
475  UBool codePointOrder);
476 
497 U_CAPI int32_t U_EXPORT2
498 u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder);
499 
540 U_CAPI int32_t U_EXPORT2
541 u_strCaseCompare(const UChar *s1, int32_t length1,
542  const UChar *s2, int32_t length2,
543  uint32_t options,
544  UErrorCode *pErrorCode);
545 
558 U_CAPI int32_t U_EXPORT2
559 u_strncmp(const UChar *ucs1,
560  const UChar *ucs2,
561  int32_t n);
562 
576 U_CAPI int32_t U_EXPORT2
577 u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n);
578 
598 U_CAPI int32_t U_EXPORT2
599 u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options);
600 
622 U_CAPI int32_t U_EXPORT2
623 u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options);
624 
646 U_CAPI int32_t U_EXPORT2
647 u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options);
648 
657 U_CAPI UChar* U_EXPORT2
659  const UChar *src);
660 
672 U_CAPI UChar* U_EXPORT2
674  const UChar *src,
675  int32_t n);
676 
677 #if !UCONFIG_NO_CONVERSION
678 
689 U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
690  const char *src );
691 
704 U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
705  const char *src,
706  int32_t n);
707 
718 U_CAPI char* U_EXPORT2 u_austrcpy(char *dst,
719  const UChar *src );
720 
733 U_CAPI char* U_EXPORT2 u_austrncpy(char *dst,
734  const UChar *src,
735  int32_t n );
736 
737 #endif
738 
747 U_CAPI UChar* U_EXPORT2
748 u_memcpy(UChar *dest, const UChar *src, int32_t count);
749 
758 U_CAPI UChar* U_EXPORT2
759 u_memmove(UChar *dest, const UChar *src, int32_t count);
760 
770 U_CAPI UChar* U_EXPORT2
771 u_memset(UChar *dest, UChar c, int32_t count);
772 
784 U_CAPI int32_t U_EXPORT2
785 u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count);
786 
800 U_CAPI int32_t U_EXPORT2
801 u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count);
802 
820 U_CAPI UChar* U_EXPORT2
821 u_memchr(const UChar *s, UChar c, int32_t count);
822 
840 U_CAPI UChar* U_EXPORT2
841 u_memchr32(const UChar *s, UChar32 c, int32_t count);
842 
860 U_CAPI UChar* U_EXPORT2
861 u_memrchr(const UChar *s, UChar c, int32_t count);
862 
880 U_CAPI UChar* U_EXPORT2
881 u_memrchr32(const UChar *s, UChar32 c, int32_t count);
882 
930 #if defined(U_DECLARE_UTF16)
931 # define U_STRING_DECL(var, cs, length) static const UChar *var=(const UChar *)U_DECLARE_UTF16(cs)
933 # define U_STRING_INIT(var, cs, length)
934 #elif U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && (U_CHARSET_FAMILY==U_ASCII_FAMILY || defined(U_WCHAR_IS_UTF16))
935 # define U_STRING_DECL(var, cs, length) static const UChar var[(length)+1]=L ## cs
937 # define U_STRING_INIT(var, cs, length)
938 #else
939 # define U_STRING_DECL(var, cs, length) static UChar var[(length)+1]
941 # define U_STRING_INIT(var, cs, length) u_charsToUChars(cs, var, length+1)
942 #endif
943 
991 U_CAPI int32_t U_EXPORT2
992 u_unescape(const char *src,
993  UChar *dest, int32_t destCapacity);
994 
1008 typedef UChar (U_CALLCONV *UNESCAPE_CHAR_AT)(int32_t offset, void *context);
1010 
1039 U_CAPI UChar32 U_EXPORT2
1041  int32_t *offset,
1042  int32_t length,
1043  void *context);
1044 
1065 U_CAPI int32_t U_EXPORT2
1066 u_strToUpper(UChar *dest, int32_t destCapacity,
1067  const UChar *src, int32_t srcLength,
1068  const char *locale,
1069  UErrorCode *pErrorCode);
1070 
1091 U_CAPI int32_t U_EXPORT2
1092 u_strToLower(UChar *dest, int32_t destCapacity,
1093  const UChar *src, int32_t srcLength,
1094  const char *locale,
1095  UErrorCode *pErrorCode);
1096 
1097 #if !UCONFIG_NO_BREAK_ITERATION
1098 
1137 U_CAPI int32_t U_EXPORT2
1138 u_strToTitle(UChar *dest, int32_t destCapacity,
1139  const UChar *src, int32_t srcLength,
1140  UBreakIterator *titleIter,
1141  const char *locale,
1142  UErrorCode *pErrorCode);
1143 
1144 #endif
1145 
1170 U_CAPI int32_t U_EXPORT2
1171 u_strFoldCase(UChar *dest, int32_t destCapacity,
1172  const UChar *src, int32_t srcLength,
1173  uint32_t options,
1174  UErrorCode *pErrorCode);
1175 
1176 #if defined(U_WCHAR_IS_UTF16) || defined(U_WCHAR_IS_UTF32) || !UCONFIG_NO_CONVERSION
1199 U_CAPI wchar_t* U_EXPORT2
1200 u_strToWCS(wchar_t *dest,
1201  int32_t destCapacity,
1202  int32_t *pDestLength,
1203  const UChar *src,
1204  int32_t srcLength,
1205  UErrorCode *pErrorCode);
1228 U_CAPI UChar* U_EXPORT2
1230  int32_t destCapacity,
1231  int32_t *pDestLength,
1232  const wchar_t *src,
1233  int32_t srcLength,
1234  UErrorCode *pErrorCode);
1235 #endif /* defined(U_WCHAR_IS_UTF16) || defined(U_WCHAR_IS_UTF32) || !UCONFIG_NO_CONVERSION */
1236 
1259 U_CAPI char* U_EXPORT2
1260 u_strToUTF8(char *dest,
1261  int32_t destCapacity,
1262  int32_t *pDestLength,
1263  const UChar *src,
1264  int32_t srcLength,
1265  UErrorCode *pErrorCode);
1266 
1289 U_CAPI UChar* U_EXPORT2
1291  int32_t destCapacity,
1292  int32_t *pDestLength,
1293  const char *src,
1294  int32_t srcLength,
1295  UErrorCode *pErrorCode);
1296 
1332 U_CAPI char* U_EXPORT2
1334  int32_t destCapacity,
1335  int32_t *pDestLength,
1336  const UChar *src,
1337  int32_t srcLength,
1338  UChar32 subchar, int32_t *pNumSubstitutions,
1339  UErrorCode *pErrorCode);
1340 
1377 U_CAPI UChar* U_EXPORT2
1379  int32_t destCapacity,
1380  int32_t *pDestLength,
1381  const char *src,
1382  int32_t srcLength,
1383  UChar32 subchar, int32_t *pNumSubstitutions,
1384  UErrorCode *pErrorCode);
1385 
1437 U_CAPI UChar * U_EXPORT2
1439  int32_t destCapacity,
1440  int32_t *pDestLength,
1441  const char *src,
1442  int32_t srcLength,
1443  UErrorCode *pErrorCode);
1444 
1467 U_CAPI UChar32* U_EXPORT2
1469  int32_t destCapacity,
1470  int32_t *pDestLength,
1471  const UChar *src,
1472  int32_t srcLength,
1473  UErrorCode *pErrorCode);
1474 
1497 U_CAPI UChar* U_EXPORT2
1499  int32_t destCapacity,
1500  int32_t *pDestLength,
1501  const UChar32 *src,
1502  int32_t srcLength,
1503  UErrorCode *pErrorCode);
1504 
1540 U_CAPI UChar32* U_EXPORT2
1542  int32_t destCapacity,
1543  int32_t *pDestLength,
1544  const UChar *src,
1545  int32_t srcLength,
1546  UChar32 subchar, int32_t *pNumSubstitutions,
1547  UErrorCode *pErrorCode);
1548 
1584 U_CAPI UChar* U_EXPORT2
1586  int32_t destCapacity,
1587  int32_t *pDestLength,
1588  const UChar32 *src,
1589  int32_t srcLength,
1590  UChar32 subchar, int32_t *pNumSubstitutions,
1591  UErrorCode *pErrorCode);
1592 
1625 U_CAPI char* U_EXPORT2
1627  char *dest,
1628  int32_t destCapacity,
1629  int32_t *pDestLength,
1630  const UChar *src,
1631  int32_t srcLength,
1632  UErrorCode *pErrorCode);
1633 
1675 U_CAPI UChar* U_EXPORT2
1677  UChar *dest,
1678  int32_t destCapacity,
1679  int32_t *pDestLength,
1680  const char *src,
1681  int32_t srcLength,
1682  UChar32 subchar, int32_t *pNumSubstitutions,
1683  UErrorCode *pErrorCode);
1684 
1685 #endif
#define U_CALLCONV
Similar to U_CDECL_BEGIN/U_CDECL_END, this qualifier is necessary in callback function typedefs to ma...
Definition: platform.h:846
C API: Platform Utilities.
C API for code unit iteration.
Definition: uiter.h:341
struct UBreakIterator UBreakIterator
Opaque type representing an ICU Break iterator object.
Definition: ubrk.h:31
C API: Unicode Character Iteration.
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:427
#define U_CDECL_END
This is used to end a declaration of a library private ICU C API.
Definition: umachine.h:86
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition: umachine.h:247
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition: umachine.h:110
char16_t UChar
The base type for UTF-16 code units and pointers.
Definition: umachine.h:378
#define U_CDECL_BEGIN
This is used to begin a declaration of a library private ICU C API.
Definition: umachine.h:85
U_CAPI UChar * u_strFromUTF8Lenient(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const char *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-8 string to UTF-16.
U_CAPI UChar * u_strncpy(UChar *dst, const UChar *src, int32_t n)
Copy a ustring.
U_CAPI int32_t u_strcmp(const UChar *s1, const UChar *s2)
Compare two Unicode strings for bitwise equality (code unit order).
U_CAPI UChar * u_strFromUTF32(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const UChar32 *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-32 string to UTF-16.
U_CAPI UChar32 u_unescapeAt(UNESCAPE_CHAR_AT charAt, int32_t *offset, int32_t length, void *context)
Unescape a single sequence.
U_CAPI int32_t u_strToLower(UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, const char *locale, UErrorCode *pErrorCode)
Lowercase the characters in a string.
U_CAPI UChar * u_strFromWCS(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const wchar_t *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a wchar_t string to UTF-16.
U_CAPI UChar * u_memset(UChar *dest, UChar c, int32_t count)
Initialize count characters of dest to c.
U_CAPI int32_t u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count)
Compare the first count UChars of each buffer.
U_CAPI char * u_strToUTF8WithSub(char *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)
Convert a UTF-16 string to UTF-8.
U_CAPI UChar * u_strFromUTF8WithSub(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const char *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)
Convert a UTF-8 string to UTF-16.
U_CAPI UChar * u_strcpy(UChar *dst, const UChar *src)
Copy a ustring.
U_CAPI UChar * u_uastrcpy(UChar *dst, const char *src)
Copy a byte string encoded in the default codepage to a ustring.
U_CAPI int32_t u_strspn(const UChar *string, const UChar *matchSet)
Returns the number of consecutive characters in string, beginning with the first, that occur somewher...
U_CAPI int32_t u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options)
Compare two strings case-insensitively using full case folding.
U_CAPI int32_t u_strlen(const UChar *s)
Determine the length of an array of UChar.
U_CAPI int32_t u_strToTitle(UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, UBreakIterator *titleIter, const char *locale, UErrorCode *pErrorCode)
Titlecase a string.
U_CAPI UChar * u_memchr32(const UChar *s, UChar32 c, int32_t count)
Find the first occurrence of a code point in a string.
U_CAPI UChar * u_memmove(UChar *dest, const UChar *src, int32_t count)
Synonym for memmove(), but with UChars only.
U_CAPI int32_t u_strncmp(const UChar *ucs1, const UChar *ucs2, int32_t n)
Compare two ustrings for bitwise equality.
U_CAPI int32_t u_unescape(const char *src, UChar *dest, int32_t destCapacity)
Unescape a string of characters and write the resulting Unicode characters to the destination buffer.
U_CAPI UChar * u_uastrncpy(UChar *dst, const char *src, int32_t n)
Copy a byte string encoded in the default codepage to a ustring.
U_CAPI UChar * u_strrstr(const UChar *s, const UChar *substring)
Find the last occurrence of a substring in a string.
U_CAPI UChar * u_strFromJavaModifiedUTF8WithSub(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const char *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)
Convert a Java Modified UTF-8 string to a 16-bit Unicode string.
U_CAPI wchar_t * u_strToWCS(wchar_t *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-16 string to a wchar_t string.
U_CAPI UChar * u_memchr(const UChar *s, UChar c, int32_t count)
Find the first occurrence of a BMP code point in a string.
U_CAPI char * u_strToUTF8(char *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-16 string to UTF-8.
U_CAPI UChar * u_strncat(UChar *dst, const UChar *src, int32_t n)
Concatenate two ustrings.
U_CAPI UChar * u_strchr(const UChar *s, UChar c)
Find the first occurrence of a BMP code point in a string.
U_CAPI int32_t u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n)
Compare two Unicode strings in code point order.
U_CAPI UChar * u_strFromUTF8(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const char *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-8 string to UTF-16.
U_CAPI char * u_strToJavaModifiedUTF8(char *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a 16-bit Unicode string to Java Modified UTF-8.
U_CAPI UChar * u_strcat(UChar *dst, const UChar *src)
Concatenate two ustrings.
U_CAPI UChar * u_memrchr(const UChar *s, UChar c, int32_t count)
Find the last occurrence of a BMP code point in a string.
U_CAPI UChar * u_strstr(const UChar *s, const UChar *substring)
Find the first occurrence of a substring in a string.
U_CAPI UChar * u_strrchr(const UChar *s, UChar c)
Find the last occurrence of a BMP code point in a string.
U_CAPI UChar * u_strchr32(const UChar *s, UChar32 c)
Find the first occurrence of a code point in a string.
U_CAPI UChar * u_memcpy(UChar *dest, const UChar *src, int32_t count)
Synonym for memcpy(), but with UChars only.
U_CAPI UChar * u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength)
Find the last occurrence of a substring in a string.
U_CAPI UChar32 * u_strToUTF32WithSub(UChar32 *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)
Convert a UTF-16 string to UTF-32.
U_CAPI int32_t u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options)
Compare two strings case-insensitively using full case folding.
U_CAPI int32_t u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder)
Compare two Unicode strings (binary order) as presented by UCharIterator objects.
U_CAPI int32_t u_strcmpCodePointOrder(const UChar *s1, const UChar *s2)
Compare two Unicode strings in code point order.
U_CAPI UChar * u_strrchr32(const UChar *s, UChar32 c)
Find the last occurrence of a code point in a string.
U_CAPI UChar * u_strFromUTF32WithSub(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const UChar32 *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)
Convert a UTF-32 string to UTF-16.
U_CAPI char * u_austrncpy(char *dst, const UChar *src, int32_t n)
Copy ustring to a byte string encoded in the default codepage.
U_CAPI int32_t u_strToUpper(UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, const char *locale, UErrorCode *pErrorCode)
Uppercase the characters in a string.
U_CAPI UChar * u_memrchr32(const UChar *s, UChar32 c, int32_t count)
Find the last occurrence of a code point in a string.
U_CAPI UChar * u_strtok_r(UChar *src, const UChar *delim, UChar **saveState)
The string tokenizer API allows an application to break a string into tokens.
U_CAPI int32_t u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options)
Compare two strings case-insensitively using full case folding.
U_CAPI UBool u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number)
Check if the string contains more Unicode code points than a certain number.
U_CAPI int32_t u_strcspn(const UChar *string, const UChar *matchSet)
Returns the number of consecutive characters in string, beginning with the first, that do not occur s...
U_CAPI int32_t u_strCompare(const UChar *s1, int32_t length1, const UChar *s2, int32_t length2, UBool codePointOrder)
Compare two Unicode strings (binary order).
U_CAPI UChar * u_strpbrk(const UChar *string, const UChar *matchSet)
Locates the first occurrence in the string string of any of the characters in the string matchSet.
U_CAPI char * u_austrcpy(char *dst, const UChar *src)
Copy ustring to a byte string encoded in the default codepage.
U_CAPI UChar * u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength)
Find the first occurrence of a substring in a string.
U_CAPI int32_t u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count)
Compare two Unicode strings in code point order.
U_CAPI int32_t u_strFoldCase(UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, uint32_t options, UErrorCode *pErrorCode)
Case-folds the characters in a string.
UChar(* UNESCAPE_CHAR_AT)(int32_t offset, void *context)
Callback function for u_unescapeAt() that returns a character of the source text given an offset and ...
Definition: ustring.h:1008
U_CAPI UChar32 * u_strToUTF32(UChar32 *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)
Convert a UTF-16 string to UTF-32.
U_CAPI int32_t u_countChar32(const UChar *s, int32_t length)
Count Unicode code points in the length UChar code units of the string.
U_CAPI int32_t u_strCaseCompare(const UChar *s1, int32_t length1, const UChar *s2, int32_t length2, uint32_t options, UErrorCode *pErrorCode)
Compare two strings case-insensitively using full case folding.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:430