我正在計算每個字母出現在文件中的次數。當我運行下面的代碼時,它會計算兩次「Z」。誰能解釋爲什麼?計算文件中字母的出現次數
測試數據是:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
#include <iostream> //Required if your program does any I/O
#include <iomanip> //Required for output formatting
#include <fstream> //Required for file I/O
#include <string> //Required if your program uses C++ strings
#include <cmath> //Required for complex math functions
#include <cctype> //Required for letter case conversion
using namespace std; //Required for ANSI C++ 1998 standard.
int main()
{
string reply;
string inputFileName;
ifstream inputFile;
char character;
int letterCount[127] = {};
cout << "Input file name: ";
getline(cin, inputFileName);
// Open the input file.
inputFile.open(inputFileName.c_str()); // Need .c_str() to convert a C++ string to a C-style string
// Check the file opened successfully.
if (! inputFile.is_open())
{
cout << "Unable to open input file." << endl;
cout << "Press enter to continue...";
getline(cin, reply);
exit(1);
}
while (inputFile.peek() != EOF)
{
inputFile >> character;
//toupper(character);
letterCount[static_cast<int>(character)]++;
}
for (int iteration = 0; iteration <= 127; iteration++)
{
if (letterCount[iteration] > 0)
{
cout << static_cast<char>(iteration) << " " << letterCount[iteration] << endl;
}
}
system("pause");
exit(0);
}
聞起來像作業......不知道C但在Java中,我使用ASCII等價物來計算一個字母的出現次數...... – 2011-03-05 20:08:47
ABCDEFGHIJKLMNOPQRSTUVQXYZ包含兩個「Q」,這就是計數「Q」兩次的解釋。 – 2011-03-05 20:09:16
您是否在閱讀時打印了每個字符? (在你的'while(inputFile.peek()!= EOF)'循環中)。你嘗試過什麼調試? – Crisfole 2011-03-05 20:09:53