整理文件/返回信息

时间:2012-03-15 01:27:36

标签: c++

只需要一般的项目帮助。 基本上我需要为8名球员做这件事。这些数字来自我应该打入的文件。前5场比赛的前5个数字,篮板的下一个数据,然后是块数。我假设我需要在循环中调用读取名字,姓氏,点数,篮板和块,处理该信息然后输出信息。任何提示/建议?

ex来自文本文件:

Thomas Robinson 17 28 10 16 10 11 12 13 8 9 1 1 1 0 1

从我应该将该信息返回到

         Game Log 
----------------------------------------------------------------------------- 

 Player Name : Thomas Robinson 
----------------------------------------------------------------------------- 
Game #     Points       Rebounds       Blocks 
----------------------------------------------------------------------------- 
   1    17    11    1 
   2    28    12    1 
   3    10    13    1 
   4    16    8    0 
   5    10    9    1
----------------------------------------------------------------------------- 

2 个答案:

答案 0 :(得分:0)

我认为这是作业,但由于我不知道哪些功能可以使用,哪些功能不能,我的答案可能不适合我的要求。

初看起来,我有三个想法。

1)使用ifstream::get()

ifstream in_file;
in_file.open("your_file_name.txt");
char ch;
string str = "";
while(in_file.get() != '\n')
{
  str = "";
  while((ch = in_file.get()) != ' ')
  {
    // add ch to str.
    str += string(&ch, 1);
  }
  // push str into an array, vector, stack, etc.
  /*...*/
}
in_file.close();

2)将该行读入string,然后使用split函数,您可以找到如何在任何地方实现split函数。

3)使用ifstream::getline()函数,它提供了一个删除器参数。

您可以找到ifstream::get()ifstream::getline() here以及here

的用法

我在1)中提供的代码可能不是一个好习惯,你应该检查'EOF'流错误,in_file.open()的异常等。

btw,我第一次写的代码是错误代码,你不能使用str += string(ch),你应该写str += string(&ch, 1)str += string(1, ch)str += ch你能找到string的构造函数here。很抱歉再次出现错误代码。

答案 1 :(得分:0)

您可以使用“>>”解析文件运算符非常好,如果所有内容都由空格和换行符分隔。哪个是“>>”操作员工作。所以,是的,你需要一个循环。基本上你希望循环像这样工作:

(我从来不知道你可以在Comp Sci 1中做到这一点。它会给我带来太多麻烦......我常常做其他答案正在做的事情。)

(我还假设您知道如何将txt文件作为ifstream打开。如果没有,请参阅http://www.cplusplus.com/reference/iostream/ifstream/open/。)

int temp;
int n = 0;
int x = 1;

while(textfile >> temp) // Each time through the loop, this will make temp 
                        // the next value in the file. It will stop when 
                        // there's nothing more to read.
{
    /* Now it's going to go from left to right through the file, so you 
       need some logic to put it in the right place. you know that every 
       five numbers start a new column, so:*/

    array[x][n] = temp; //Start x at 1 because you're skipping the first column
    n++;
    if (n == 5) {
        n = 0;
        x++; //Every five values, move on to the next column
    }

现在你的数组将拥有它需要的东西。只需按计划输出即可。