開発環境 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