首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::strxfrm

Defined in header <cstring>

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

转换以空结尾的字节字符串。src转换为实现定义的形式,以便将两个转换后的字符串与std::strcmp提供的结果与将原始字符串与std::strcoll,在当前的C语言环境中。

第一count将转换字符串的字符写入目标,包括终止空字符,并返回完全转换字符串的长度,不包括终止空字符。

如果dest数组不够大。如果destsrc重叠。

如果count​0​,然后dest允许为空指针。

注记

可以接收整个转换字符串的缓冲区的正确长度是1+std::strxfrm(nullptr, src, 0)...

此函数用于使用相同的字符串或字符串集进行多个依赖于区域设置的比较,因为使用它更有效。std::strxfrm将所有字符串只转换一次,然后将转换后的字符串与std::strcmp...

参数

dest

-

pointer to the first element of the array where the transformed string will be written

src

-

pointer to the first character of a null-terminated byte string to transform

count

-

maximum number of characters to be written

返回值

转换后的字符串的长度,不包括终止空字符.

二次

代码语言:javascript
复制
#include <iostream>
#include <iomanip>
#include <cstring>
#include <string>
#include <cassert>
 
int main()
{
    char* loc = std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    assert(loc);
 
    std::string in1 = "hrnec";
    std::string out1(1+std::strxfrm(nullptr, in1.c_str(), 0), ' ');
    std::string in2 = "chrt";
    std::string out2(1+std::strxfrm(nullptr, in2.c_str(), 0), ' ');
 
    std::strxfrm(&out1[0], in1.c_str(), out1.size());
    std::strxfrm(&out2[0], in2.c_str(), out2.size());
 
    std::cout << "In the Czech locale: ";
    if(out1 < out2)
         std::cout << in1 << " before " << in2 << '\n';
    else
         std::cout << in2 << " before " << in1 << '\n';
 
    std::cout << "In lexicographical comparison: ";
    if(in1 < in2)
         std::cout << in1 << " before " << in2 << '\n';
    else
         std::cout << in2 << " before " << in1 << '\n';
 
}

二次

产出:

二次

代码语言:javascript
复制
In the Czech locale: hrnec before chrt
In lexicographical comparison: chrt before hrnec

二次

另见

wcsxfrm

transform a wide string so that wcscmp would produce the same result as wcscoll (function)

do_transform virtual

transforms a string so that collation can be replaced by comparison (virtual protected member function of std::collate)

strcoll

compares two strings in accordance to the current locale (function)

c strxfrm文档

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券