teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記1

2019/02/17 01:42

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -31,4 +31,31 @@
31
31
  "あいうえお" でも日本語的に考えると5文字。でも半角英数字と比較した場合は、単純計算で 5×2=10 となり、10文字扱いになります。(厳密にはバイト数だけど。)
32
32
 
33
33
  ケータイサイズのケース( ケータイでもいいし、たばこでもいい。 ) に ノートパソコンを入れようとしているのと同じこと。
34
- 「え? 同じ人工物でしょ?」みたいな。
34
+ 「え? 同じ人工物でしょ?」みたいな。
35
+
36
+ ---
37
+
38
+ [追記1]
39
+
40
+ ちなみに日本語みたいな全角で一文字とするような文字で構成するなら std::stringよりは **std::wstring** がいいみたいです。
41
+
42
+ 定義は忘れましたが、std::stringはcharの動的確保系ですが、std::wstring は wchar_t の動的確保系です。
43
+
44
+ 日本向けに発送して、かつ、個人開発なら std::wstringのほうが無難...かな?
45
+
46
+ ちょっとコツが要りますが、std::wstringだと文字化けしにくいです。( ただしOSの設定とかによるかもしれないが。 )
47
+
48
+ std::stringだと、"あ" と構成するだけでも、1バイト目と2バイト目をチェックしてやっとわかる。
49
+
50
+ だから 1バイト目にそれだけで完結するデータが来たらそれで終了してしまう可能性がある。
51
+
52
+ 文字コードはよくわからないので、あくまでイメージですが、
53
+
54
+ "さすが" と "d*pqが" が同じ...
55
+
56
+ みたいな感じで文字化けする可能性が高いです。
57
+
58
+ std::wstring だと wchar_t なので "あ" で一つ。と見なせるらしいので、日本語を扱うならこっちのほうが楽かな?
59
+
60
+ また、私はあまりわかりませんが、std::stringはバグを持っているっぽいです。
61
+ (どっかの記事で見かけた...どこだったっけ?)