回答編集履歴

4

修正したコードを追加

2020/10/14 06:25

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -111,3 +111,45 @@
111
111
  ```
112
112
 
113
113
  `address [Tokyo 1丁目 111-222], japan: 1` だけが読めました。
114
+
115
+
116
+
117
+ **追記2**
118
+
119
+ ```C++
120
+
121
+ #include <fstream>
122
+
123
+ #include <iostream>
124
+
125
+ #include <string>
126
+
127
+ using namespace std;
128
+
129
+
130
+
131
+ int main()
132
+
133
+ {
134
+
135
+ string address, tmp;
136
+
137
+ bool japan;
138
+
139
+ ifstream file;
140
+
141
+ file.open("sample.txt");
142
+
143
+
144
+
145
+ while (getline(file, address) && getline(file, tmp)) {
146
+
147
+ japan = tmp == "1";
148
+
149
+ cout << "address [" << address << "], japan: " << japan << endl;
150
+
151
+ }
152
+
153
+ }
154
+
155
+ ```

3

コードを追加

2020/10/14 06:25

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```C++
14
14
 
15
- while (getline(file, address) && (file >> country) {
15
+ while (getline(file, address) && (file >> country)) {
16
16
 
17
17
  ...
18
18
 
@@ -49,3 +49,65 @@
49
49
 
50
50
 
51
51
  sample.txt の内容も質問に追加してください。
52
+
53
+
54
+
55
+ **追記**
56
+
57
+ 修正された質問のコードに、
58
+
59
+ `cout << "address [" << address << "], japan: " << japan << endl;`
60
+
61
+ を追加して実行すると
62
+
63
+ ```text
64
+
65
+ address [Tokyo 1丁目 111-222], japan: 1
66
+
67
+ address [], japan: 1
68
+
69
+ ```
70
+
71
+ 無限ループにはなっていません。
72
+
73
+
74
+
75
+ コードを次のようにすると、
76
+
77
+ ```C++
78
+
79
+ #include <fstream>
80
+
81
+ #include <iostream>
82
+
83
+ #include <string>
84
+
85
+ using namespace std;
86
+
87
+
88
+
89
+ int main()
90
+
91
+ {
92
+
93
+ string address;
94
+
95
+ bool japan;
96
+
97
+ ifstream file;
98
+
99
+ file.open("sample.txt");
100
+
101
+
102
+
103
+ while (getline(file, address) && (file >> japan)) {
104
+
105
+ cout << "address [" << address << "], japan: " << japan << endl;
106
+
107
+ }
108
+
109
+ }
110
+
111
+ ```
112
+
113
+ `address [Tokyo 1丁目 111-222], japan: 1` だけが読めました。

2

adddress を address に修正

2020/10/14 06:09

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -7,8 +7,6 @@
7
7
 
8
8
 
9
9
  file.eof() が false だからといって、getline や file >> が成功するとは限りません。
10
-
11
-
12
10
 
13
11
  次のように getline や file >> の返した値をチェックしないといけないでしょう。
14
12
 
@@ -28,7 +26,7 @@
28
26
 
29
27
  while (true) {
30
28
 
31
- getline(file, adddress);
29
+ getline(file, address);
32
30
 
33
31
  if (file.eof()) break;
34
32
 

1

> を >> に修正

2020/10/14 03:18

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  ifstream の file を使っているのに、cin の ignore や clear は無意味です。
6
6
 
7
+
8
+
7
9
  file.eof() が false だからといって、getline や file >> が成功するとは限りません。
8
10
 
9
11
 
10
12
 
11
- 次のように getline や file > の返した値をチェックしないといけないでしょう。
13
+ 次のように getline や file >> の返した値をチェックしないといけないでしょう。
12
14
 
13
15
  ```C++
14
16