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

回答編集履歴

3

refine

2015/02/27 11:17

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  追記:文字列を「`char`型の配列型」または「`string`型」で表現する場合、前者ではあらゆる操作が煩雑になり、メモリリークやバッファオーバーランのようなバグの温床になります。後者ならば文字列操作をわりと直感的に記述できます。
10
10
 
11
- 下記は2つの文字列を連結し、ある文字列と一致確認するコードの例です。下のほうが簡単です(よね)。
11
+ 下記は2つの文字列を連結し、別の文字列と一致確認するコードの例です。下のほうが簡単です(よね)。
12
12
  ```
13
13
  // char型の配列型バージョン
14
14
  #include <string.h>
@@ -23,7 +23,7 @@
23
23
  #include <string>
24
24
  std::string s1 = "ABC";
25
25
  std::string s2 = "XYZ";
26
- s1 = s1 + s2; // s1s2を連結し"ABCXYZ"をs1に設定
26
+ s1 += s2; // s1の後ろs2を連結し"ABCXYZ"をs1に設定
27
27
  if (s1 == "ABCXYZ") {
28
28
  // s1と"ABCXYZ"が一致することを確認
29
29
  }

2

コメント回答

2015/02/27 11:16

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -3,3 +3,29 @@
3
3
  `string`型は「文字列=複数の文字からなる列」を格納する、C++ライブラリが提供する型です。`#include <string>`が必要ですし、正式名称は`std::string`と書かなければなりません。ただし`using namespace std;`としておけば、`string`のように使えます。
4
4
 
5
5
  特に理由がなければ、C++での文字列は`string`型を使ったほうがよいです。
6
+
7
+ ---
8
+
9
+ 追記:文字列を「`char`型の配列型」または「`string`型」で表現する場合、前者ではあらゆる操作が煩雑になり、メモリリークやバッファオーバーランのようなバグの温床になります。後者ならば文字列操作をわりと直感的に記述できます。
10
+
11
+ 下記は2つの文字列を連結し、ある文字列と一致確認するコードの例です。下のほうが簡単です(よね)。
12
+ ```
13
+ // char型の配列型バージョン
14
+ #include <string.h>
15
+ char s1[7] = "ABC"; // 6文字+終端文字1つ分を確保しておくこと!
16
+ char s2[] = "XYZ";
17
+ strcat(s1, s2); // s1とs2を連結した"ABCXYZ"をs1に設定
18
+ if (strcmp(s1, "ABCXYZ") == 0) {
19
+ // s1と"ABCXYZ"が一致することを確認
20
+ }
21
+
22
+ // string型バージョン
23
+ #include <string>
24
+ std::string s1 = "ABC";
25
+ std::string s2 = "XYZ";
26
+ s1 = s1 + s2; // s1とs2を連結した"ABCXYZ"をs1に設定
27
+ if (s1 == "ABCXYZ") {
28
+ // s1と"ABCXYZ"が一致することを確認
29
+ }
30
+ ```
31
+

1

char[]について追記

2015/02/27 08:02

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,3 +1,5 @@
1
- `char`型は「1文字」だけ格納できる、C++言語の基本型です。
1
+ `char`型は「1文字」だけ格納できる、C++言語の基本型です。文字"列"を格納するには「`char`型の配列型」を使う必要があります。(C++言語の祖先である)C言語で文字列を表すのは、この方法しかありませんでした。
2
2
 
3
- `string`型は「文字列=複数の文字からなる列」を格納する、C++ライブラリが提供する型です。`#include <string>`が必要ですし、正式名称は`std::string`と書かなければなりません。ただし`using namespace std;`としておけば、`string`のように使えます。
3
+ `string`型は「文字列=複数の文字からなる列」を格納する、C++ライブラリが提供する型です。`#include <string>`が必要ですし、正式名称は`std::string`と書かなければなりません。ただし`using namespace std;`としておけば、`string`のように使えます。
4
+
5
+ 特に理由がなければ、C++での文字列は`string`型を使ったほうがよいです。