開発環境 |
Microsoft Visual Studio Community 2017 |
実行環境 |
Microsoft Windows 10 Home (64bit) |
プロジェクトの種類 |
Visual C++/空のプロジェクト |
プロジェクト名 |
prefix |
prefix.cpp
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#define T1 "abcあいう?"
#define T2 L"abcあいう□"
#define T3 u"abcあいう□"
#define T4 U"abcあいう□"
#define T5 u8"abcあいう□"
// U+2B746 □
void dump(const void *ptr, size_t sz)
{
printf("sz=%zu\n", sz);
unsigned char *p = (unsigned char *)ptr;
for (size_t i = 0; i < sz; i++) {
printf("%02x%c", *p, " - - - \n"[i & 0xf]);
p++;
}
printf("\n");
}
int main()
{
const char *str1 = T1;
printf("\n・マルチバイト文字セット\n");
printf(" \"%s\" strlen=%zu\n", T1, strlen(str1));
dump(str1, sizeof T1);
const wchar_t *str2 = T2;
printf("\n・Unicode文字セット\n");
printf(" L\"%s\" wcslen=%zu\n", T1, wcslen(str2));
dump(str2, sizeof T2);
const char16_t *str3 = T3;
printf("\n・UTF-16LE\n");
printf(" u\"%s\"\n", T1);
dump(str3, sizeof T3);
const char32_t *str4 = T4;
printf("\n・UTF-32LE\n");
printf(" U\"%s\"\n", T1);
dump(str4, sizeof T4);
const char *str5 = T5;
printf("\n・UTF-8\n");
printf(" u8\"%s\"\n", T1);
dump(str5, sizeof T5);
return 0;
}
出力
・マルチバイト文字セット
"abcあいう?" strlen=11
sz=12
61 62 63 82-a0 82 a2 82-a4 81 48 00-
・Unicode文字セット
L"abcあいう?" wcslen=8
sz=18
61 00 62 00-63 00 42 30-44 30 46 30-6d d8 46 df
00 00
・UTF-16LE
u"abcあいう?"
sz=18
61 00 62 00-63 00 42 30-44 30 46 30-6d d8 46 df
00 00
・UTF-32LE
U"abcあいう?"
sz=32
61 00 00 00-62 00 00 00-63 00 00 00-42 30 00 00
44 30 00 00-46 30 00 00-46 b7 02 00-00 00 00 00
・UTF-8
u8"abcあいう?"
sz=17
61 62 63 e3-81 82 e3 81-84 e3 81 86-f0 ab 9d 86
00
最終更新:2018年05月12日 23:06