Files
hustoj/web/cppreference-zh/chmhelp/cpp-string-char_traits.html
2025-08-01 12:57:54 +08:00

381 lines
26 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>std::char_traits</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_string_char_traits skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">std::</span>char_traits</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-string.html">string</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<table class="t-dcl-begin">
<tbody>
<tr class="t-dsc-header">
<td>
<div>&#23450;&#20041;&#20110;&#22836;&#25991;&#20214; <code><a href="cpp-header-string.html">&lt;string&gt;</a></code></div>
</td>
<td></td>
<td></td>
</tr>
<tr class="t-dcl">
<td class="t-dcl-nopad">
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span><span class="sy1">&lt;</span><br /></span>
<p>&nbsp; &nbsp; <span class="kw1">class</span> CharT<br /></p>
<span class="sy1">&gt;</span> <span class="kw1">class</span> char_traits<span class="sy4">;</span></div>
</td>
<td class="t-dcl-nopad"></td>
<td class="t-dcl-nopad"></td>
</tr>
<tr class="t-dcl-sep">
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><code>char_traits</code> &#31867;&#26159;&#19968;&#31181;&#29305;&#24615;&#31867;&#27169;&#26495;&#65292;&#23545;&#32473;&#23450;&#30340;&#23383;&#31526;&#31867;&#22411;&#25277;&#35937;&#22522;&#30784;&#23383;&#31526;&#21644;&#23383;&#31526;&#20018;&#27604;&#36739;&#25805;&#20316;&#12290;&#26377;&#23450;&#20041;&#25805;&#20316;&#38598;&#26159;&#20960;&#20046;&#22987;&#32456;&#21487;&#23454;&#29616;&#20110;&#20854;&#39033;&#30340;&#36890;&#29992;&#31639;&#27861;&#12290;&#20174;&#32780;&#21487;&#20197;&#23558;&#36825;&#20123;&#31639;&#27861;&#29992;&#20110;&#20960;&#20046;&#20219;&#20309;&#21487;&#33021;&#30340;&#23383;&#31526;&#25110;&#23383;&#31526;&#20018;&#31867;&#22411;&#65292;&#21482;&#38656;&#25552;&#20379;&#33258;&#23450;&#20041;&#30340; <code>char_traits</code> &#31867;&#12290;</p>
<p><code>char_traits</code> &#31867;&#27169;&#26495;&#34920;&#29616;&#20026;&#26174;&#24335;&#23454;&#20363;&#21270;&#30340;&#22522;&#30784;&#12290;&#29992;&#25143;&#21487;&#20197;&#23545;&#20219;&#20309;&#33258;&#23450;&#20041;&#23383;&#31526;&#31867;&#22411;<a href="cpp-language-extending_std.html">&#25552;&#20379;&#29305;&#21270;</a>&#12290;&#26631;&#20934;&#23383;&#31526;&#31867;&#22411;&#19978;&#24050;&#23450;&#20041;&#20102;&#25968;&#31181;&#29305;&#21270;&#12290;</p>
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E7.89.B9.E5.8C.96">&#26631;&#20934;&#29305;&#21270;</span></h3>
<p>&#26631;&#20934;&#29305;&#21270;&#30340;&#25104;&#21592; typedef &#23450;&#20041;&#22914;&#19979;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc-hitem">
<th>&#29305;&#21270;</th>
<th><code>char_type</code></th>
<th><code>int_type</code></th>
<th><code>pos_type</code></th>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char</span><span class="sy1">&gt;</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">int</span></span></span></td>
<td><span class="t-lc"><a href="cpp-io-fpos.html">std::streampos</a></span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">wchar_t</span><span class="sy1">&gt;</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">wchar_t</span></span></span></td>
<td><span class="t-lc">std::wint_t</span></td>
<td><span class="t-lc"><a href="cpp-io-fpos.html">std::wstreampos</a></span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char16_t</span><span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char16_t</span></span></span></td>
<td><span class="t-lc"><a href="cpp-types-integer.html">std::uint_least16_t</a></span></td>
<td><span class="t-lc"><a href="cpp-io-fpos.html">std::u16streampos</a></span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char32_t</span><span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char32_t</span></span></span></td>
<td><span class="t-lc"><a href="cpp-types-integer.html">std::uint_least32_t</a></span></td>
<td><span class="t-lc"><a href="cpp-io-fpos.html">std::u32streampos</a></span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span>char8_t<span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">char8_t</span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">int</span></span></span></td>
<td><span class="t-lc">std::u8streampos</span></td>
</tr>
</table>
<table class="t-dsc-begin">
<tr class="t-dsc-hitem">
<th>&#25104;&#21592;&#31867;&#22411;</th>
<th>&#23450;&#20041;&#65288;&#23545;&#25152;&#26377;&#26631;&#20934;&#29305;&#21270;&#30456;&#21516;&#65289;</th>
</tr>
<tr class="t-dsc">
<td><code>off_type</code></td>
<td><span class="t-lc"><a href="cpp-io-streamoff.html">std::streamoff</a></span></td>
</tr>
<tr class="t-dsc">
<td><code>state_type</code></td>
<td><span class="t-lc"><a href="cpp-string-multibyte-mbstate_t.html">std::mbstate_t</a></span></td>
</tr>
<tr class="t-dsc">
<td><code>comparison_category</code> <span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
<td><span class="t-lc">std::strong_ordering</span></td>
</tr>
</table>
<p>&#26631;&#20934;&#29305;&#21270;&#30340;&#25104;&#21592;&#20989;&#25968;&#30340;&#35821;&#20041;&#23450;&#20041;&#22914;&#19979;&#65306;</p>
<table class="t-dsc-begin">
<tr class="t-dsc-hitem">
<th>&#29305;&#21270;</th>
<th><code>assign</code></th>
<th><code>eq</code></th>
<th><code>lt</code></th>
<th><code>eof</code></th>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char</span><span class="sy1">&gt;</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">=</span></span></span></td>
<td><code>unsigned char</code> &#30340; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">==</span></span></span></td>
<td><code>unsigned char</code> &#30340; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">&lt;</span></span></span></td>
<td><span class="t-lc"><a href="cpp-io-c.html">EOF</a></span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">wchar_t</span><span class="sy1">&gt;</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">=</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">==</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">&lt;</span></span></span></td>
<td><span class="t-lc">WEOF</span></td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char16_t</span><span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">=</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">==</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">&lt;</span></span></span></td>
<td>&#38750;&#27861; UTF-16 &#32534;&#30721;&#21333;&#20803;</td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char32_t</span><span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">=</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">==</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">&lt;</span></span></span></td>
<td>&#38750;&#27861; UTF-32 &#32534;&#30721;&#21333;&#20803;</td>
</tr>
<tr class="t-dsc">
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span>char8_t<span class="sy1">&gt;</span></span></span> <span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">=</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">==</span></span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy1">&lt;</span></span></span></td>
<td>&#38750;&#27861; UTF-8 &#32534;&#30721;&#21333;&#20803;</td>
</tr>
</table>
<p><code>char_traits</code> &#31867;&#27169;&#26495;&#30340;&#26631;&#20934;&#29305;&#21270;&#28385;&#36275;<a href="cpp-named_req-CharTraits.html"><span style="font-style:italic">&#23383;&#31526;&#29305;&#24449;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(CharTraits)</span></a> &#30340;&#35201;&#27714;&#12290;</p>
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E7.B1.BB.E5.9E.8B">&#25104;&#21592;&#31867;&#22411;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc-hitem">
<td>&#31867;&#22411;</td>
<td>&#23450;&#20041;</td>
</tr>
<tr class="t-dsc">
<td><code>char_type</code></td>
<td><code>CharT</code></td>
</tr>
<tr class="t-dsc">
<td><code>int_type</code></td>
<td>&#33021;&#20445;&#26377;&#25152;&#26377; <code>char_type</code> &#20540;&#21152; <code>EOF</code> &#30340;&#25972;&#25968;&#31867;&#22411;</td>
</tr>
<tr class="t-dsc">
<td><code>off_type</code></td>
<td><i>&#23454;&#29616;&#23450;&#20041;</i></td>
</tr>
<tr class="t-dsc">
<td><code>pos_type</code></td>
<td><i>&#23454;&#29616;&#23450;&#20041;</i></td>
</tr>
<tr class="t-dsc">
<td><code>state_type</code></td>
<td><i>&#23454;&#29616;&#23450;&#20041;</i></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.87.BD.E6.95.B0">&#25104;&#21592;&#20989;&#25968;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-assign.html"><span class="t-lines"><span>assign</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#36171;&#20540;&#19968;&#20010;&#23383;&#31526;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-cmp.html"><span class="t-lines"><span>eq</span><span>lt</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#27604;&#36739;&#20108;&#20010;&#23383;&#31526;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-move.html"><span class="t-lines"><span>move</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#31227;&#21160;&#19968;&#20010;&#23383;&#31526;&#24207;&#21015;&#21040;&#21478;&#19968;&#20010;&#19978;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-copy.html"><span class="t-lines"><span>copy</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#22797;&#21046;&#19968;&#20010;&#23383;&#31526;&#24207;&#21015;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-compare.html"><span class="t-lines"><span>compare</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#20197;&#23383;&#20856;&#24207;&#27604;&#36739;&#20108;&#20010;&#23383;&#31526;&#24207;&#21015;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-length.html"><span class="t-lines"><span>length</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#36820;&#22238;&#19968;&#20010;&#23383;&#31526;&#24207;&#21015;&#30340;&#38271;&#24230;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-find.html"><span class="t-lines"><span>find</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#22312;&#23383;&#31526;&#24207;&#21015;&#20013;&#26597;&#25214;&#19968;&#20010;&#23383;&#31526;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-to_char_type.html"><span class="t-lines"><span>to_char_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#36716;&#25442; <code>int_type</code> &#21040;&#31561;&#25928;&#30340; <code>char_type</code><br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-to_int_type.html"><span class="t-lines"><span>to_int_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#36716;&#25442; <code>char_type</code> &#21040;&#31561;&#25928;&#30340; <code>int_type</code><br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-eq_int_type.html"><span class="t-lines"><span>eq_int_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#27604;&#36739;&#20108;&#20010; <code>int_type</code> &#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-eof.html"><span class="t-lines"><span>eof</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#36820;&#22238;&#19968;&#20010; <i>eof</i> &#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-char_traits-not_eof.html"><span class="t-lines"><span>not_eof</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#26816;&#26597;&#23383;&#31526;&#26159;&#21542;&#20026; <i>eof</i> &#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<p>&#29992;&#25143;&#23450;&#20041;&#30340;&#23383;&#31526;&#29305;&#24615;&#21487;&#20197;&#29992;&#20110;&#25552;&#20379;<a rel="nofollow" class="external text" href="http://www.gotw.ca/gotw/029.htm">&#26080;&#20851;&#22823;&#23567;&#20889;&#30340;&#27604;&#36739;</a></p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;string&gt;</span>
<span class="co2">#include &lt;string_view&gt;</span>
<span class="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;cctype&gt;</span>
<span class="kw1">struct</span> ci_char_traits <span class="sy4">:</span> <span class="kw1">public</span> std<span class="sy4">::</span><span class="me2">char_traits</span><span class="sy1">&lt;</span><span class="kw4">char</span><span class="sy1">&gt;</span> <span class="br0">{</span>
<span class="kw4">static</span> <span class="kw4">char</span> to_upper<span class="br0">(</span><span class="kw4">char</span> ch<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> std<span class="sy4">::</span><span class="me2">toupper</span><span class="br0">(</span><span class="br0">(</span><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="br0">)</span> ch<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">static</span> <span class="kw4">bool</span> eq<span class="br0">(</span><span class="kw4">char</span> c1, <span class="kw4">char</span> c2<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> to_upper<span class="br0">(</span>c1<span class="br0">)</span> <span class="sy1">==</span> to_upper<span class="br0">(</span>c2<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">static</span> <span class="kw4">bool</span> lt<span class="br0">(</span><span class="kw4">char</span> c1, <span class="kw4">char</span> c2<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> to_upper<span class="br0">(</span>c1<span class="br0">)</span> <span class="sy1">&lt;</span> to_upper<span class="br0">(</span>c2<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">static</span> <span class="kw4">int</span> compare<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> s1, <span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> s2, <a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">while</span> <span class="br0">(</span> n<span class="sy2">--</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span> <span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span> to_upper<span class="br0">(</span><span class="sy2">*</span>s1<span class="br0">)</span> <span class="sy1">&lt;</span> to_upper<span class="br0">(</span><span class="sy2">*</span>s2<span class="br0">)</span> <span class="br0">)</span> <span class="kw1">return</span> <span class="sy2">-</span><span class="nu0">1</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span> to_upper<span class="br0">(</span><span class="sy2">*</span>s1<span class="br0">)</span> <span class="sy1">&gt;</span> to_upper<span class="br0">(</span><span class="sy2">*</span>s2<span class="br0">)</span> <span class="br0">)</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="sy2">++</span>s1<span class="sy4">;</span> <span class="sy2">++</span>s2<span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> find<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> s, <a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n, <span class="kw4">char</span> a<span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">auto</span> <span class="kw4">const</span> ua <span class="br0">(</span>to_upper<span class="br0">(</span>a<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">while</span> <span class="br0">(</span> n<span class="sy2">--</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span> <span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>to_upper<span class="br0">(</span><span class="sy2">*</span>s<span class="br0">)</span> <span class="sy1">==</span> ua<span class="br0">)</span>
<span class="kw1">return</span> s<span class="sy4">;</span>
s<span class="sy2">++</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">return</span> nullptr<span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> DstTraits, <span class="kw1">class</span> CharT, <span class="kw1">class</span> SrcTraits<span class="sy1">&gt;</span>
<span class="kw4">constexpr</span> <a href="cpp-string-basic_string_view.html"><span class="kw1246">std::<span class="me2">basic_string_view</span></span></a><span class="sy1">&lt;</span>CharT, DstTraits<span class="sy1">&gt;</span>
traits_cast<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string_view.html"><span class="kw1246">std::<span class="me2">basic_string_view</span></span></a><span class="sy1">&lt;</span>CharT, SrcTraits<span class="sy1">&gt;</span> src<span class="br0">)</span> <span class="kw1">noexcept</span>
<span class="br0">{</span>
<span class="kw1">return</span> <span class="br0">{</span>src.<span class="me1">data</span><span class="br0">(</span><span class="br0">)</span>, src.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="br0">}</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">literals</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">auto</span> s1 <span class="sy1">=</span> <span class="st0">&quot;Hello&quot;</span>sv<span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">auto</span> s2 <span class="sy1">=</span> <span class="st0">&quot;heLLo&quot;</span>sv<span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>traits_cast<span class="sy1">&lt;</span>ci_char_traits<span class="sy1">&gt;</span><span class="br0">(</span>s1<span class="br0">)</span> <span class="sy1">==</span> traits_cast<span class="sy1">&lt;</span>ci_char_traits<span class="sy1">&gt;</span><span class="br0">(</span>s2<span class="br0">)</span><span class="br0">)</span>
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> s1 <span class="sy1">&lt;&lt;</span> <span class="st0">&quot; and &quot;</span> <span class="sy1">&lt;&lt;</span> s2 <span class="sy1">&lt;&lt;</span> <span class="st0">&quot; are equal<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">Hello and heLLo are equal</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-string-basic_string.html"><span class="t-lines"><span>basic_string</span></span></a></div>
</div>
</td>
<td>&#23384;&#20648;&#24182;&#25805;&#20316;&#23383;&#31526;&#24207;&#21015;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>