@@ -301,33 +301,33 @@ <h2>ユースケース</h2>
301301< h3 > C++26仕様でのユースケース</ h3 >
302302< h4 > リテラルエンコーディングの確認</ h4 >
303303< p > コンパイル時に文字列リテラルのエンコーディングがUTF-8であることを保証する:</ p >
304- < p > < div class ="yata " id ="1d91b01b31672438b68ca6b02104f4e13e6654b9 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class =" w " > </ span > < span class =" cpf "> <text_encoding></ span >
304+ < p > < div class ="yata " id ="1d91b01b31672438b68ca6b02104f4e13e6654b9 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href =" "> <text_encoding></ a > </ span >
305305
306306< span class ="c1 "> // コンパイル時にリテラルエンコーディングを検証</ span >
307- < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> ,</ span >
307+ < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> ,</ span >
308308< span class ="w "> </ span > < span class ="s "> "This program requires UTF-8 literal encoding"</ span > < span class ="p "> );</ span >
309309
310310< span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="p "> {}</ span >
311311</ code > </ pre > </ div >
312312</ div > </ p >
313313< h4 > 環境エンコーディングとリテラルエンコーディングの互換性確認</ h4 >
314314< p > 実行時に、リテラルエンコーディングと環境エンコーディングが一致するかを確認する:</ p >
315- < p > < div class ="yata " id ="0524ca886c6cfeef56fd1e5971dbe7a662f3bc60 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class =" w " > </ span > < span class =" cpf "> <text_encoding></ span >
315+ < p > < div class ="yata " id ="0524ca886c6cfeef56fd1e5971dbe7a662f3bc60 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href =" "> <text_encoding></ a > </ span >
316316< span class ="cp "> #include < a href ="iostream.html "> <iostream></ a > </ span >
317317
318318< span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
319- < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> !=</ span > < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ())</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
319+ < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> !=</ span > < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ())</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
320320< span class ="w "> </ span > < span class ="n "> < a href ="print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> cerr</ span > < span class ="p "> ,</ span >
321321< span class ="w "> </ span > < span class ="s "> "Warning: literal encoding ({}) differs from environment encoding ({})"</ span > < span class ="p "> ,</ span >
322- < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
323- < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> ());</ span >
322+ < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
323+ < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> ());</ span >
324324< span class ="w "> </ span > < span class ="p "> }</ span >
325325< span class ="p "> }</ span >
326326</ code > </ pre > </ div >
327327</ div > </ p >
328328< h4 > 外部ライブラリとの相互運用</ h4 >
329329< p > ICU、iconv等のライブラリにエンコーディング名を渡す:</ p >
330- < p > < div class ="yata " id ="387b91fa06e946e09029e71a5fca0434350475aa "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class =" w " > </ span > < span class =" cpf "> <text_encoding></ span >
330+ < p > < div class ="yata " id ="387b91fa06e946e09029e71a5fca0434350475aa "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href =" "> <text_encoding></ a > </ span >
331331< span class ="cp "> #include < a href ="format.html "> <format></ a > </ span >
332332< span class ="cp "> #include < a href ="cstdlib.html "> <cstdlib></ a > </ span >
333333
@@ -336,26 +336,26 @@ <h4>外部ライブラリとの相互運用</h4>
336336< span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
337337< span class ="w "> </ span > < span class ="c1 "> // iconvを使用してUTF-8から環境エンコーディングに変換</ span >
338338< span class ="w "> </ span > < span class ="n "> iconv_t</ span > < span class ="w "> </ span > < span class ="n "> conv</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="n "> iconv_open</ span > < span class ="p "> (</ span >
339- < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
339+ < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
340340< span class ="w "> </ span > < span class ="s "> "UTF-8"</ span > < span class ="p "> );</ span >
341341
342342< span class ="w "> </ span > < span class ="c1 "> // ICUを使用する場合</ span >
343343< span class ="w "> </ span > < span class ="n "> UErrorCode</ span > < span class ="w "> </ span > < span class ="n "> err</ span > < span class ="p "> ;</ span >
344344< span class ="w "> </ span > < span class ="n "> UConverter</ span > < span class ="o "> *</ span > < span class ="w "> </ span > < span class ="n "> converter</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="n "> ucnv_open</ span > < span class ="p "> (</ span >
345- < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
345+ < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> environment</ span > < span class ="p "> ().</ span > < span class ="n "> name</ span > < span class ="p "> (),</ span >
346346< span class ="w "> </ span > < span class ="o "> &</ span > < span class ="n "> err</ span > < span class ="p "> );</ span >
347347< span class ="p "> }</ span >
348348</ code > </ pre > </ div >
349349</ div > </ p >
350350< h4 > µs表記の安全な使用</ h4 >
351351< p > リテラルと出力先のエンコーディングがともにUTF-8である場合にのみ、µ記号を使用する:</ p >
352- < p > < div class ="yata " id ="1702699331223f99962b582ed4985a8a2d0d2c0e "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class =" w " > </ span > < span class =" cpf "> <text_encoding></ span >
352+ < p > < div class ="yata " id ="1702699331223f99962b582ed4985a8a2d0d2c0e "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href =" "> <text_encoding></ a > </ span >
353353< span class ="cp "> #include < a href ="locale.html "> <locale></ a > </ span >
354354< span class ="cp "> #include < a href ="print.html "> <print></ a > </ span >
355355
356356< span class ="kt "> void</ span > < span class ="w "> </ span > < span class ="nf "> print_microseconds</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> count</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
357- < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
358- < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> locale</ span > < span class ="p "> ().</ span > < span class ="n "> encoding</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > text_encoding </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
357+ < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > < /span > < span class ="o "> ::</ span > < span class ="n "> literal</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
358+ < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> locale</ span > < span class ="p "> ().</ span > < span class ="n "> encoding</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="n "> < a href =" text_encoding/text_encoding.html " > std::text_encoding </ a > </ span > < span class ="o "> ::</ span > < span class ="n "> id</ span > < span class ="o "> ::</ span > < span class ="n "> UTF8</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
359359< span class ="w "> </ span > < span class ="n "> < a href ="print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="s "> "{}</ span > < span class ="se "> \u00B5</ span > < span class ="s "> s"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> count</ span > < span class ="p "> );</ span > < span class ="w "> </ span > < span class ="c1 "> // µs</ span >
360360< span class ="w "> </ span > < span class ="k "> return</ span > < span class ="p "> ;</ span >
361361< span class ="w "> </ span > < span class ="p "> }</ span >
0 commit comments