teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2021/08/18 16:19

投稿

kazuma-s
kazuma-s

スコア8222

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

実行結果の修正

2021/08/18 16:19

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  実行結果
48
48
  ```text
49
+ あい\うえお\かきくけこ -> あい\うえお\かきくけこ
49
50
  表層 -> 表層
50
51
  予想予 -> 予想予
51
- あい\うえお\かきくけこ -> あい\うえお\かきくけこ
52
52
  ```