0

NBA チームとそのスターターを含むいくつかのファイルがあり、この情報をプログラムに追加して、いくつかのタスクを実行する必要があります。

私は現在、ファイルを解析できることに固執しています。

ファイルは次のようになります。

Team Name, Point guard, shooting guard, small forward, power forward, center

例えば:

Chicago Bulls, Derrick Rose, Kyle Korver, Luol Deng, Carlos Boozer, Joakim Noah Denver Nuggest, .. etc.

チーム、ポイントガード、スモールフォワードの名前だけを追加できるようにしたいのですが、その方法がわかりません。

私がこれまでに持っているもの:

 17         ifstream* myIN = new ifstream();
 18         myIN->open(filename.c_str());
 19 
 20         string teamName;
 21 
 22         *myIN >> teamName;
 23         
 24         while(!myIN->eof()){
 25                 TEAM.push_back(teamName);
 26                 //TODO
 27         }      

「find()」を使用して各コンマを検索することを検討していますが、最初のコンマの前後と 3 番目のコンマの後にのみ情報を記録する方法がわかりません。

あらゆる種類のガイダンスをいただければ幸いです。

4

2 に答える 2

1

これは、tokenizing.

ここでは、必要なさまざまなフィールドが同じ文字で区切られています。,

詳細については、C++ でのトークン化に関するこのスタック オーバーフローの質問を参照してください。

また、トークン化された要素の不要なスペースを削除することを忘れないでください (最初のスペースを除く)。

于 2013-09-14T00:48:44.347 に答える
0

多くの言語 (またはその標準ライブラリ) にはsplit、区切り文字列をトークン化 (または分割) することを目的とした関数があります。残念ながら、C++std::stringクラスには機能がありませんsplit

ただし、boost::splitこの機能を提供します。この回答と、 Splitting a string in C++という質問に対する他の回答を参照してください。

ところで、あなたのファイル形式は一般的にCSV ファイルと呼ばれるもののようです。また、次のような興味深い質問もあるかもしれません: C++ で CSV ファイル データを読み取って操作するにはどうすればよいですか?

于 2013-09-14T01:04:55.807 に答える