うぅーん。考えどころです。
LINUXに組版を移植するわけですが(たぶん)、
文字列、どうしますかねー。
問題は、、、
・せっかくだから、ちゃんとサロゲートペアしなくちゃいけない
・Windows版とソースは共通(プロセス管理とかでifdef多発は仕方ないにしても)
ってことなんですが、なにしろ、Windows版を作るときに、基本をwchar_tにしちゃったもんだから、、
そのころは、wchar_tって、、かならず2バイトだと思ってたもんだから。。。
だからといって、wchar_tを4バイト固定にして、UTF-32にするって方法もあるけど、
Windowsでの扱いがめんどいし。。。。
ってことで、
・基本はUTF-16でやる
・でも、ポイントポイントではUTF-32でやるj場合もある
ってことで、とりあえずは設計開始。
よって、文字列関係の関数は、基本、手作りにします。
そうなんですよね。
返信削除LinuxとかMacだとwchar_tが4byteなんですよね。
→mingwはUTF-16なのでGCC系だから4byteというわけじゃないんですよね。
かといってUTF-8でやるのもWindowsで面倒だし。
そもそもソースをUTF-8にしてもソースコード中の文字リテラルはSJISになっちゃうし。
C++11のUnicodeの各種リテラルもどのコンパイラもまともにサポートしてくれないしで、結局wchar_tで文字リテラルはL""つけて、ソースコードはBOM付きUTF-8で作るところで落ち着くような気がします。