回答編集履歴

2

追記

2021/08/18 16:19

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -101,3 +101,59 @@
101
101
  予想予 -> 予想予
102
102
 
103
103
  ```
104
+
105
+ **追記**
106
+
107
+ マルチバイト文字が UTF-8 ではなく、Shift-JIS だと分かっていたとすれば、
108
+
109
+ ```C++
110
+
111
+ #include <iostream>
112
+
113
+ #include <string>
114
+
115
+ #include <sstream> // ostringstream
116
+
117
+ using namespace std;
118
+
119
+
120
+
121
+ bool isleading(unsigned char c) { return (c ^ 0x20) - 0xa1 < 60u; }
122
+
123
+
124
+
125
+ string bs2(const string& s)
126
+
127
+ {
128
+
129
+ ostringstream oss;
130
+
131
+ for (const char *p = s.c_str(); *p; p++) {
132
+
133
+ oss << *p;
134
+
135
+ if (*p == '\') oss << '\';
136
+
137
+ else if (isleading(*p)) oss << *++p;
138
+
139
+ }
140
+
141
+ return oss.str();
142
+
143
+ }
144
+
145
+
146
+
147
+ int main()
148
+
149
+ {
150
+
151
+ string a[] = { "あい\うえお\かきくけこ", "表層", "予想予" };
152
+
153
+ for (string& s : a)
154
+
155
+ cout << s << " -> " << bs2(s) << endl;
156
+
157
+ }
158
+
159
+ ```

1

実行結果の修正

2021/08/18 16:19

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -94,10 +94,10 @@
94
94
 
95
95
  ```text
96
96
 
97
+ あい\うえお\かきくけこ -> あい\うえお\かきくけこ
98
+
97
99
  表層 -> 表層
98
100
 
99
101
  予想予 -> 予想予
100
102
 
101
- あい\うえお\かきくけこ -> あい\うえお\かきくけこ
102
-
103
103
  ```