Ich habe mich gefragt, ob mir jemand helfen kann. Ich versuche entweder eine Liste oder eine Struktur als Container zu verwenden, um die Häufigkeit von Buchstaben in einer Textdatei zu zählen, und habe Probleme, die Lösung herauszufinden.C++ - Kein passender Konstruktor
Ich habe einen Code unten und habe zuerst versucht, eine struct
zu verwenden, aber kann nicht herausfinden, wie man leicht dieses Objekt mit einem Zeiger navigiert. Hat jemand Beispiele dafür, wie man Einträge in einer struct
hinzufügen und durchlaufen kann? Ist ein struct
nicht wie ein erweiterbarer Container?
Wenn ich die std::list
verwenden kann, würde ich lieber tun, aber konnte nicht wirklich irgendwelche Beispiele auf dieser Seite oder im Internet finden, die nützlich genug waren nach dem Lesen der std::list
Dokumentation. Ich brauche eine char
Variable und eine ganze Zahl die char
enthält den Buchstaben gefunden und die ganze Zahl ist der Zähler, wie oft ich jeden Buchstaben gefunden habe.
Kann mir hier jemand helfen?
Danke.
-Code bisher:
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
struct LetterBox {
char letter;
size_t frequency;
LetterBox* Next;
LetterBox(char ch, size_t count, LetterBox* ptr)
{
letter = ch;
frequency = count;
Next = ptr;
}
};
int main() {
new LetterBox(' ',0,nullptr);
// new LetterBox(' ',0,nullptr);
int count = 0;
char ch;
string line;
string FileName;
cout << "Enter the name of the textfile: ";
cin >> FileName;
ifstream file (FileName);
if (file.is_open())
while (file.good())
{
while(getline(file, line)) {
for (int i = 0; i < sizeof(line); i++) {
ch = toupper(line[i]);
count++;
cout << ch;
}
}
file.close();
}
else
{
cout << "Unable to open file:" << FileName << endl;
return 1;
}
return 0;
}
sollten Sie Karten verwenden: http://www.cplusplus.com/reference/map/map/. Sie sollten im Allgemeinen niemals 'struct's in C++ verwenden. – DyZ
Warum nicht std :: map verwenden, um Zeichen und ihre Zähler direkt zuzuordnen? –
Ihre 'LetterBox'-Struktur kann ein Array oder eine Liste als Klasse enthalten. Oder Sie können die Linked-List verwenden. – MKR