回答編集履歴

2

追記

2017/12/29 15:04

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -31,3 +31,17 @@
31
31
  配列というかコンテナという意味ではビックリする程たくさんあります。
32
32
 
33
33
  [ここにリスト](http://www.cplusplus.com/reference/stl/)があります。
34
+
35
+
36
+
37
+ ---
38
+
39
+ 【追記】
40
+
41
+
42
+
43
+ > もし、strがchar*型だった場合、これはpush_backメンバ関数を当然持たないのでコンパイル・エラーになります。
44
+
45
+
46
+
47
+ 不正確な表現でした。`std::istream::operator>>(char*)`は未定義なのでコンパイル・エラーになります。

1

補足

2017/12/29 15:04

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -7,6 +7,8 @@
7
7
  std::stringもstd::string自身の機能で勝手に領域サイズが増えるのではなく、例えば`std::cin`等で文字列を読み込む時は、`std::istream::operator>>()`という関数がstd::stringの`push_back`などを呼び出しています。
8
8
 
9
9
  `std::cin`は`std::istream`を継承しているので、`std::cin >> str;`と書くと、`std::istream::operator>>()`が呼ばれるのです。
10
+
11
+ もし、strが`char*`型だった場合、これは`push_back`メンバ関数を当然持たないのでコンパイル・エラーになります。strが`std::string`型の場合`push_back`メンバ関数を持つのでエラーにならず適切に動作します。
10
12
 
11
13
 
12
14
 
@@ -26,6 +28,6 @@
26
28
 
27
29
 
28
30
 
29
- 配列というかコンテナといういみではビックリする程たくさんあります。
31
+ 配列というかコンテナという意味ではビックリする程たくさんあります。
30
32
 
31
33
  [ここにリスト](http://www.cplusplus.com/reference/stl/)があります。