我正在编写一个程序,用于从文件中读取数据:
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;
}
}
}
}
答案 0 :(得分:0)
我会使用一个简单的数组来计算所有字母。 字母表有26个字母(a-z),所以我会创建一个长度为26的数组,其中每个位置代表一个字母。 然后,您可以通过减去&#39; a&#39;来找到数组中每个字母的位置。从每封信。它的工作方式非常像地图。
这是一个片段:
int letters[26] = {0};
letters['z' - 'a'] += 1; // letters[25], or 26th element.