回答編集履歴
4
0xff60以下を追加
test
CHANGED
@@ -72,4 +72,4 @@
|
|
72
72
|
|
73
73
|
```
|
74
74
|
|
75
|
-
0x1000 以上の文字が全部全角文字と考えるのは無茶ですが、とりあえず動くでしょう。
|
75
|
+
0x1000 以上 0xff60以下の文字が全部全角文字と考えるのは無茶ですが、とりあえず動くでしょう。
|
3
半角片仮名を追加
test
CHANGED
@@ -26,7 +26,13 @@
|
|
26
26
|
|
27
27
|
SMALL_RECT rect = { 10, 3, 49, 4 }; // left, top, right, bottom
|
28
28
|
|
29
|
+
wchar_t s[2][20] = {
|
30
|
+
|
29
|
-
|
31
|
+
L"abcdefgあいうえおαβγ",
|
32
|
+
|
33
|
+
L"日本語 English アイウエオ"
|
34
|
+
|
35
|
+
};
|
30
36
|
|
31
37
|
for (int i = 0; i < 2; i++) {
|
32
38
|
|
@@ -34,7 +40,7 @@
|
|
34
40
|
|
35
41
|
for (int j = 0; j < 20 && s[i][j]; j++) {
|
36
42
|
|
37
|
-
if (s[i][j] < 0x1000) {
|
43
|
+
if (s[i][j] < 0x1000 || s[i][j] > 0xff60) {
|
38
44
|
|
39
45
|
buf[k].Char.UnicodeChar = s[i][j];
|
40
46
|
|
2
半角文字の範囲を変更
test
CHANGED
@@ -26,15 +26,17 @@
|
|
26
26
|
|
27
27
|
SMALL_RECT rect = { 10, 3, 49, 4 }; // left, top, right, bottom
|
28
28
|
|
29
|
-
wchar_t s[2][20] = { L"abcdefgあいうえお", L"日本語 English" };
|
29
|
+
wchar_t s[2][20] = { L"abcdefgあいうえお\x3b1\x3b2\x3b3", L"日本語 English" };
|
30
30
|
|
31
31
|
for (int i = 0; i < 2; i++) {
|
32
32
|
|
33
|
-
|
33
|
+
int k = i * 40;
|
34
34
|
|
35
|
-
|
35
|
+
for (int j = 0; j < 20 && s[i][j]; j++) {
|
36
36
|
|
37
|
+
if (s[i][j] < 0x1000) {
|
38
|
+
|
37
|
-
buf[k].Char.
|
39
|
+
buf[k].Char.UnicodeChar = s[i][j];
|
38
40
|
|
39
41
|
buf[k++].Attributes = FOREGROUND_GREEN;
|
40
42
|
|
@@ -64,4 +66,4 @@
|
|
64
66
|
|
65
67
|
```
|
66
68
|
|
67
|
-
0x
|
69
|
+
0x1000 以上の文字が全部全角文字と考えるのは無茶ですが、とりあえず動くでしょう。
|
1
コードの修正
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
マルチバイト文字ではなく Unicode を使いましょう。
|
2
|
+
|
1
3
|
```C++
|
2
4
|
|
3
5
|
#define UNICODE
|
@@ -28,9 +30,7 @@
|
|
28
30
|
|
29
31
|
for (int i = 0; i < 2; i++) {
|
30
32
|
|
31
|
-
int k = i * 40;
|
32
|
-
|
33
|
-
for (int
|
33
|
+
for (int k = i * 40, j = 0; s[i][j]; j++) {
|
34
34
|
|
35
35
|
if (s[i][j] <= 0xff) {
|
36
36
|
|