トップページ > 記事閲覧
u8文字列のchar8_t対応について
名前:was-blue.0793 日時: 2021/05/02 14:14

DXライブラリミニテクニック内「WindowsアプリとAndroidアプリでは使用する文字コードが異なることについて」において、 文字列をWindowsとAndroidで共通化させるための手順として以下のような記述があります: >例えばプログラム中に文字列を『"あいうえお"』と記述していた場合は、ここの先頭に『u8』を付け足して、『u8"あいうえお"』とします。 >この『u8』は『UTF-8』を意味していて、これを文字列の先頭に付けることでその文字列を『UTF-8』形式にすることができます。 しかし、C++20以降この「u8」を付けた文字列は「char8_t」型の文字列となり、TCHAR(char)型とは適合しないことになりました。(char型の変数にchar8_tの文字列を渡すとコンパイルエラーになる?) そこで、将来的にDXライブラリで文字列を渡す関数は、char8_tに対応する予定がありますか? それでは、よろしくお願いします。
メンテ

Page: 1 |

Re: u8文字列のchar8_t対応について ( No.1 )
名前:管理人 日時:2021/05/03 21:28

> そこで、将来的にDXライブラリで文字列を渡す関数は、char8_tに対応する予定がありますか? 今の所予定はありません とりあえずは DrawString( 0, 0, ( const char * )u8"ABCD", GetColor( 255,255,255 ) ) ; ↑こちらのように char * にキャストして使うことになるかなと思います
メンテ
Re: u8文字列のchar8_t対応について ( No.2 )
名前:yumetodo 日時:2021/05/08 09:17

以前char8_t対応については ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4772 で触れたところですが、やはりchar8_t対応がほしいところです。 プログラムへ入力されるテキストの大半は、Web業界の煽りもうけてUTF-8となるなか、 それをユーザー側でキャストしたり、UTF-16に変換したりするのはなかなか面倒なものです。 SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); もそもそも`char*`で渡されたときの文字コードがわからないから存在する代物であって、 char8_tにはUTF-8を詰め込むことが意図されているのですから、必要ないわけです。 以前の長さ保証版と組み合わさると組合せ爆発してしまう懸念があるとは思うのですが、 いっそのこと長さ保証版のchar8_t対応版のみ追加という考え方もあると思うので、改めてご検討いただければなと思います。 C++11で最初からchar8_tを入れておけば・・・と標準化委員会に振り回されている感は否めないですけどね・・・。
メンテ
Re: u8文字列のchar8_t対応について ( No.3 )
名前:管理人 日時:2021/05/09 02:01

> 以前の長さ保証版と組み合わさると組合せ爆発してしまう懸念があるとは思うのですが、 > いっそのこと長さ保証版のchar8_t対応版のみ追加という考え方もあると思うので、改めてご検討いただければなと思います。 現時点で文字列を引数に渡す関数の追加がかなり面倒なほど手順が多くなってしまっているので、 VisualStudio で普通にプロジェクトを作成した際に u8"" が char8_t になるようになった頃に どうするか検討したいと思います (- -;;
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存