當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


C++ wcsxfrm()用法及代碼示例

C++ 中的wcsxfrm() 函數將給定的空終止寬字符串轉換為實現定義的形式。

wcsxfrm() 函數轉換寬字符串,以便使用 wcscmp() 函數比較兩個轉換後的寬字符串產生與在當前 C 語言環境中使用 wcscoll() 函數比較原始寬字符串相同的結果。

例如,x 和 y 是兩個寬字符串。 a 和 b 是兩個寬字符串,分別使用 wcsxfrm 函數對 x 和 y 進行變換。

然後,

wcscmp(a,b) = wcscoll(x,y)

它在<cwchar> 頭文件中定義。

wcsxfrm()原型

size_t wcsxfrm( wchar_t* dest, const wchar_t* src, size_t count );

wcsxfrm() 函數將 src 指向的寬字符串的第一個 count 寬字符轉換為實現定義的形式,並將結果存儲在 dest 指向的內存位置。

在以下情況下,此函數的行為未定義:

  • dest 的大小小於所需的大小。
  • dest 和 src 重疊。

參數:

  • dest :指向存儲轉換後的寬字符串的數組的指針。
  • src:指向要轉換的空終止寬字符串的指針。
  • count:要轉換的最大寬字符數。

返回:

wcsxfrm() 函數返回轉換的寬字符數,不包括終止的空寬字符 L'\0'。

示例:wcsxfrm() 函數如何工作?

#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;

int main()
{
	setlocale(LC_COLLATE, "cs_CZ.UTF-8");
	
	const wchar_t* s1 = L"\u0068\u0072\u006e\u0065\u0063";
	const wchar_t* s2 = L"\u0063\u0068\u0072\u0074";
	wchar_t t1[20], t2[20];
	
	cout << "wcscoll returned " << wcscoll(s1,s2) << endl;
	cout << "Before transformation, " << "wcscmp returned " << wcscmp(s1,s2) << endl;
	
	wcsxfrm(t1,s1,10);
	wcsxfrm(t2,s2,10);
	
	cout << "After transformation, " << "wcscmp returned " << wcscmp(t1,t2) << endl;
	return 0;
}

運行程序時,輸出將是:

wcscoll returned -1
Before transformation, wcscmp returned 1
After transformation, wcscmp returned -1

相關用法


注:本文由純淨天空篩選整理自 C++ wcsxfrm()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。