如何解析文档中的团队信息并将其存储到类中?

时间:2013-09-14 00:34:01

标签: c++ class vector

我有一些包含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()”查找每个逗号,但我不知道如何只在第一个逗号之前和之后以及第三个逗号后记录信息。

非常感谢任何形式的指导。

2 个答案:

答案 0 :(得分:1)

使用tokenizing解析这是非常常见的(幸运的是,很简单)。

在这里,您需要的不同字段由相同的字符分隔:,

有关详细信息,请参阅此stackoverflow question about tokenizing in C++

另外,请勿忘记删除标记化元素上的不必要空格(第一个除外)

答案 1 :(得分:0)

许多语言(或其标准库)都有split函数,其目的是对分隔的字符串进行标记(或拆分)。不幸的是,C ++ std::string类不提供split函数。

但是,boost::split提供此功能;请参阅this answer以及问题Splitting a string in C++的其他答案。

顺便说一句,您的文件格式似乎是通常所说的CSV File。您也可以找到感兴趣的问题:How can I read and manipulate CSV file data in C++?