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


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


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

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

例如,x 和 y 是兩個字符串。 a 和 b 是使用 strxfrm 函數分別轉換 x 和 y 形成的兩個字符串。然後調用 strcmp(a,b) 與調用 strcoll(x,y) 相同。

strxfrm()原型

size_t strxfrm(char* dest, const char* src, size_t count);

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

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

  • dest 的大小小於所需大小。
  • destsrc 重疊。

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

參數:

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

返回:

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

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

#include <iostream>
#include <cstring>
#include <clocale>
using namespace std;
int main()
{
	setlocale(LC_COLLATE, "cs_CZ.UTF-8");
	const char* s1 = "hrnec";
	const char* s2 = "chrt";
	char t1[20], t2[20];

	cout << "strcoll returned " << strcoll(s1,s2) << endl;
	cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl;

	strxfrm(t1,s1,10);
	strxfrm(t2,s2,10);
	cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl;

	return 0;
}

運行程序時,輸出將是:

strcoll returned -1
Before transformation, strcmp returned 1
After transformation, strcmp returned -1

相關用法


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