The FoldString function maps one string to another, performing a specified transformation option.
int FoldString(
DWORD dwMapFlags, |
// mapping transformation options |
LPCTSTR lpSrcStr, |
// pointer to source string |
int cchSrc, |
// size of source string, in bytes or characters |
LPTSTR lpDestStr, |
// pointer to destination buffer |
int cchDest |
// size of destination buffer, in bytes or characters |
); |
Option |
Meaning |
MAP_FOLDCZONE |
Fold compatibility zone characters into standard Unicode equivalents. For information about compatibility zone characters, see the following Remarks section. |
MAP_FOLDDIGITS |
Map all digits to Unicode characters 0 through 9. |
MAP_PRECOMPOSED |
Map accented characters to precomposed characters, in which the accent and base character are combined into a single character value. This value cannot be combined with MAP_COMPOSITE. |
MAP_COMPOSITE |
Map accented characters to composite characters, in which the accent and base character are represented by two character values. This value cannot be combined with MAP_PRECOMPOSED. |
MAP_EXPAND_LIGATURES |
Expand all ligature characters so that they are represented by their two-character equivalent. For example, the ligature 'æ' expands to the two characters 'a' and 'e'. This value cannot be combined with MAP_PRECOMPOSED or MAP_COMPOSITE. |
If the function succeeds, the return value is the number of bytes (ANSI version) or characters (Unicode version) written to the destination buffer, or if the cchDest parameter is zero, the number of bytes or characters required to hold the mapped string.
If the function fails, the return value is zero. To get extended error information, call GetLastError. GetLastError may return one of the following error codes:
ERROR_INSUFFICIENT_BUFFER
ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER
The mapped string is null-terminated if the source string is null-terminated.
The lpSrcStr and lpDestStr pointers must not be the same. If they are the same, the function fails and GetLastError returns ERROR_INVALID_PARAMETER.
The compatibility zone in Unicode consists of characters in the range 0xF900 through 0xFFEF that are assigned to characters from other character-encoding standards but are actually variants of characters that are already in Unicode. The compatibility zone is used to support round-trip mapping to these standards. Applications can use the MAP_FOLDCZONE flag to avoid supporting the duplication of characters in the compatibility zone.