次のような FileName というテキスト ファイルを解析しようとしています。
KD JD 6s 5s 3c // no rank (king high)
AH Ks Js AD Ac // three of a kind
今、私はそれらをベクトルに保存したいと思います(「//」より前のすべて)。
int FileParsing(vector<Card> & v, char * FileName) {
ifstream ifs;
ifs.open(FileName);
if (!ifs.is_open()){
cout << "file cannot be opened." << endl;
} else {
string line;
while(getline(ifs, line)){
istringstream iss (line);
bool condition = CountWords(line); //dont worry about this method
ReadCardDefinitionStrings (condition, line, v);
}
}
return 0;
}
void ReadCardDefinitionStrings (bool condition, string line, vector<Card> & v){
istringstream iss (line);
string CardDefinitionStrings; //e.g. 2C, 3h, 7s, Kh
if (condition) {
while(iss>>CardDefinitionStrings){
if (CardDefinitionStrings == "//"){ //stop reading after it sees "//"
return;
}
Card c = TestCard(CardDefinitionStrings);
v.push_back(c);
}
}
}
私が得ている問題は、3c の後に「//」が表示されると、元に戻ることです。
while(getline(ifs, line)){
istringstream iss (line);
bool condition = CountWords(line);
ReadCardDefinitionStrings (condition, line, v);
}
しかし、今回は行が空です (私はそれを AH Ks Js AD Ac // スリー オブ ア カインドにしたかったのです)。つまり、このループは何もせずに 1 回だけ実行されます。そして次の実行では、ラインは AH Ks Js AD Ac // スリー オブ ア カインドと等しくなります。なぜこれが起こるのか分かりますか?