String と std::string
Siv3D で用いる String について
String の実態は std::u32string
文字列は型が変わると中身も全く異なるものになる
例: 文字 'あ' を String と std::string でそれぞれ表現するとき
std::string ➡️ char の配列
Unicode(UTF-8): { 0xe3, 0x81, 0x82 }
Shift JIS: { 0x82, 0xa0 }
String ➡️ char32_t の配列
Unicode(UTF-32): { 0x3042 }
このように同じ文字を表しているときでも、文字列の型によって実態が変わってしまうことに注意
それどころか、文字列の型が同じでも文字コードによって実態が違うことすらある
なお、v8からはWindows環境でも/utf-8オプションが標準になった
(参考) 他のプログラミング言語の文字
String が UTF-16
Java, C#, JavaScript