回答編集履歴
2
追記
answer
CHANGED
@@ -49,4 +49,32 @@
|
|
49
49
|
あい\うえお\かきくけこ -> あい\うえお\かきくけこ
|
50
50
|
表層 -> 表層
|
51
51
|
予想予 -> 予想予
|
52
|
+
```
|
53
|
+
**追記**
|
54
|
+
マルチバイト文字が UTF-8 ではなく、Shift-JIS だと分かっていたとすれば、
|
55
|
+
```C++
|
56
|
+
#include <iostream>
|
57
|
+
#include <string>
|
58
|
+
#include <sstream> // ostringstream
|
59
|
+
using namespace std;
|
60
|
+
|
61
|
+
bool isleading(unsigned char c) { return (c ^ 0x20) - 0xa1 < 60u; }
|
62
|
+
|
63
|
+
string bs2(const string& s)
|
64
|
+
{
|
65
|
+
ostringstream oss;
|
66
|
+
for (const char *p = s.c_str(); *p; p++) {
|
67
|
+
oss << *p;
|
68
|
+
if (*p == '\') oss << '\';
|
69
|
+
else if (isleading(*p)) oss << *++p;
|
70
|
+
}
|
71
|
+
return oss.str();
|
72
|
+
}
|
73
|
+
|
74
|
+
int main()
|
75
|
+
{
|
76
|
+
string a[] = { "あい\うえお\かきくけこ", "表層", "予想予" };
|
77
|
+
for (string& s : a)
|
78
|
+
cout << s << " -> " << bs2(s) << endl;
|
79
|
+
}
|
52
80
|
```
|
1
実行結果の修正
answer
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
実行結果
|
48
48
|
```text
|
49
|
+
あい\うえお\かきくけこ -> あい\うえお\かきくけこ
|
49
50
|
表層 -> 表層
|
50
51
|
予想予 -> 予想予
|
51
|
-
あい\うえお\かきくけこ -> あい\うえお\かきくけこ
|
52
52
|
```
|