显示来自2d数组和stringstream的数据

时间:2015-11-09 01:05:22

标签: c++ arrays fstream stringstream

我正在编写一个程序,用于从文件中读取数据:

W Z W Y W Y W W Y W Y Z W Z Y
Z W W W Y W Y W Z Y W Z W Y Y  
Z W Z Z Y Z Z W W W Y Y Y Z W
Z W Z Z Y Z Z W W W Y Y Y Z W 
Z W Z Z Y Z Z W W W Y Y Y Z W 

这些字符(W,Y或Z)使用stringstream进行解析,并存储在5x15的2D数组中。现在我无法计算每个字符 在每行显示的次数。我已经尝试了多种方法来实现这一点,通过在我的函数中使用计数器变量,但我到目前为止还没有得到它。仅供参考,我们的想法是创建一个报告,为每一行显示这些数据,然后为所有行显示总数。

我怎样才能做到这一点? (我只能为这个赋值使用数组(没有向量,结构或类))。谢谢你们。

#include <iostream>
#include <sstream>
#include <fstream>

using namespace std;

void fromFile(ifstream &, char items[][15], const int, const int, char);

int main() 
{
    ifstream in;
    in.open("file.txt");

    const int A_ROWS = 5, A_COLUMNS = 15;

    char items[A_ROWS][A_COLUMNS];
    char itemDetails;

    fromFile(in, items, A_ROWS, A_COLUMNS, itemDetails);

    in.close();
    return 0;
}

void fromFile(ifstream & in, char items[][15], const int A_ROWS, const int A_COLUMNS, char itemDetails)
{
    for (int rows = 0; rows < A_ROWS; rows++)
    {
        for (int columns = 0; columns < A_COLUMNS; columns++)
        {
            string theData = "";
            if (getline(in, theData))
            {
                stringstream str(theData);
                while (str >> itemDetails)
                {
                    items[rows][columns] = itemDetails;
                    // test to display all the data from the file properly
                    // cout << items[rows][columns] << " ";
                }
                cout << endl;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我会使用一个简单的数组来计算所有字母。 字母表有26个字母(a-z),所以我会创建一个长度为26的数组,其中每个位置代表一个字母。 然后,您可以通过减去&#39; a&#39;来找到数组中每个字母的位置。从每封信。它的工作方式非常像地图。

这是一个片段:

int letters[26] =  {0};
letters['z' - 'a'] += 1; // letters[25], or 26th element.