- ベストアンサー
c言語の文字取扱
cで文字を扱おうとすると char型が出てきますが文字自体はintであるとも書いてありました。 Utf8なども考えると1バイトではすまなそうなんですがなぜchar型でなんとかなっているのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
char型は1バイトの文字型です。 ですので、char型のオブジェクトひとつでは、UTF-8で表現される大多数の文字を格納することができません。 たとえば、「山」という文字であれば e5 b1 b1 というコードですので、次のような配列で表現することになります。 (char[3]){ 0xe5, 0xb1, 0xb1 }
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
wchar_t なんてのもあるけどねぇ.... まあいずれにしても「1文字」が何バイトかわかったもんじゃないし.
質問者
お礼
どこかで定義されてはいるんですかね
- jacta
- ベストアンサー率26% (845/3158)
回答No.1
UTF-8などの多バイト文字は、数バイトで1文字を構成することになります。 たとえば、UTF-8の漢字は通常3バイトですが、英数字などは1バイトですので、文字の種類によって構成バイト数が変わります。 結果、前から順に見ていかないと文字の境目がわかりません。
質問者
お礼
char型部分についての説明がないのですが多バイト文字の最初の部分を保持しているという理解でいいですか? Char型ではポインタ演算ができない、多バイト文字を1バイトごとに処理してしまうのではないかとおもうのですが。
お礼
3つ使うんですか cでにほんごつかうのは避けてたんですが一度検証した方が良さそうですね