回答編集履歴

3

文章の不備修正

2020/08/17 21:05

投稿

退会済みユーザー
test CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- std::vector<char*>の要素にconst char*型を格納しているのと
5
+ std::vector<char*>の要素に
6
6
 
7
- std::cout << vstr << std::endl;の部分でvectorオブジェクト
7
+ const char*型格納しているのと、
8
8
 
9
+ std::cout << vstr << std::endl;の部分で
10
+
11
+ vectorオブジェクトをそのまま
12
+
9
- そのまま表示しているのがエラーの原因です。
13
+ 表示しようとしているのがエラーの原因です。
10
14
 
11
15
 
12
16
 

2

wandboxのリンク追加

2020/08/17 21:05

投稿

退会済みユーザー
test CHANGED
@@ -85,3 +85,5 @@
85
85
  }
86
86
 
87
87
  ```
88
+
89
+ [wandboxで実行](https://wandbox.org/permlink/8aM5F8l2dNDCWiHX)

1

<<演算子のオーバーロードについて追記

2020/08/17 13:57

投稿

退会済みユーザー
test CHANGED
@@ -39,3 +39,49 @@
39
39
  ```
40
40
 
41
41
  [wandboxで実行](https://wandbox.org/permlink/fCoDZSew4Afgv8IZ)
42
+
43
+
44
+
45
+ 追記
46
+
47
+ std::vectorはstd::coutで直接内容を表示できないですが
48
+
49
+ 下記のように自分で<<演算子のオーバーロードを作れば
50
+
51
+ std::cout << std::vectorのオブジェクト << std::endl;
52
+
53
+ で表示できるようになります。
54
+
55
+ ```c++
56
+
57
+ #include <iostream>
58
+
59
+ #include <vector>
60
+
61
+
62
+
63
+ std::ostream& operator<<(std::ostream& os, const std::vector<const char*>& vec){
64
+
65
+ for(const auto& i:vec) os << i << std::endl;
66
+
67
+ return os;
68
+
69
+ }
70
+
71
+
72
+
73
+ int main(){
74
+
75
+ const char* pstr = "abcdef";// 配列
76
+
77
+ std::vector<const char*> vstr;// ベクター配列
78
+
79
+
80
+
81
+ for (int i=0; i<5; i++) vstr.push_back(pstr);// 5回vstrへ追加
82
+
83
+ std::cout << vstr << std::endl;// 表示
84
+
85
+ }
86
+
87
+ ```