std:: wcsxfrm
|
헤더 파일에 정의됨
<cwchar>
|
||
|
std::
size_t
wcsxfrm
(
wchar_t
*
dest,
const
wchar_t
*
src,
std::
size_t
count
)
;
|
||
src 가 가리키는 널 종료 와이드 문자열을 구현 정의 형태로 변환하여, 변환된 두 문자열을 std::wcscmp 로 비교한 결과가 원본 문자열을 현재 C 로캘에서 std::wcscoll 로 비교한 결과와 동일하도록 합니다.
변환된 문자열의 첫 번째 count 개의 문자는 종료 null 문자를 포함하여 대상에 기록되며, 전체 변환된 문자열의 길이는 종료 null 문자를 제외하고 반환됩니다.
만약 count 가 0 이면, dest 는 null 포인터가 될 수 있습니다.
목차 |
참고 사항
전체 변환된 문자열을 수신할 수 있는 올바른 버퍼의 길이는 1 + std :: wcsxfrm ( nullptr, src, 0 ) 입니다.
이 함수는 동일한 와이드 문자열 또는 와이드 문자열 집합을 사용하여 여러 로케일 의존 비교를 수행할 때 사용됩니다. 모든 문자열을 한 번만 변환하기 위해
std::wcsxfrm
을 사용하고, 이후 변환된 와이드 문자열을
std::wcscmp
로 비교하는 것이 더 효율적이기 때문입니다.
매개변수
| dest | - | 변환된 문자열을 쓸 널 종료 와이드 문자열의 첫 번째 요소를 가리키는 포인터 |
| src | - | 변환할 널 종료 와이드 문자 문자열을 가리키는 포인터 |
| count | - | 출력할 최대 문자 수 |
반환값
변환된 와이드 문자열의 길이로, 종료 널 문자는 포함하지 않습니다.
예제
#include <cwchar> #include <iostream> int main() { std::setlocale(LC_ALL, "sv_SE.utf8"); std::wstring in1 = L"\u00e5r"; std::wstring out1(1 + std::wcsxfrm(nullptr, in1.c_str(), 0), L' '); std::wstring in2 = L"\u00e4ngel"; std::wstring out2(1 + std::wcsxfrm(nullptr, in2.c_str(), 0), L' '); std::wcsxfrm(&out1[0], in1.c_str(), out1.size()); std::wcsxfrm(&out2[0], in2.c_str(), out2.size()); std::wcout << "In the Swedish locale: "; if (out1 < out2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; std::wcout << "In lexicographical comparison: "; if (in1 < in2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; }
출력:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
참고 항목
문자열을 변환하여
strcmp
가
strcoll
와 동일한 결과를 생성하도록 함
(함수) |
|
|
[virtual]
|
문자열을 변환하여 비교로 콜레이션(collation)을 대체할 수 있도록 함
(
std::collate<CharT>
의 가상 protected 멤버 함수)
|
|
현재 로캘에 따라 두 와이드 문자열을 비교함
(함수) |
|
|
C documentation
for
wcsxfrm
|
|