Ich verwende diese derzeit 1 Wort zu einer Zeit, aus einer Textdatei zu lesen:C++ Wie kann ich Sätze aus einer Textdatei lesen?
int Dictionary::processFile(string file) { //receives a text file name to be read from user
string word;
int wordCount = 0;
ifstream fin;
fin.open(file.c_str());
if (fin.fail()) {
cout << endl;
cout << "Input file opening failed.\n";
return 0;
}
while (fin >> word) {
word = trimString(word); //trimString removes any symbols including spaces and words. only reads words.
exTree.ExtAvlTree_processNode(word); //processNode simply inserts the word into an avl tree. irrelevant to the question
wordCount++;
}
fin.close();
return wordCount;
}
Wie kann ich es ändern zu können, 2-3 Worte auf einmal lesen, bevor es das Wort verarbeiten. zum Beispiel liest es ein Wort, dann verarbeitet es, dann liest es das gleiche Wort, aber fügt das nächste angrenzende Wort hinzu, so dass es eine Phrase wird (bestehend aus 2 Wörtern), dann liest es die gleichen 2 Wörter, aber fügt das 3. nächste Wort hinzu.
zusätzliche Frage, ob die oben acheiveable ist:
Wie kann ich trimString Funktion Entfernen Sie Leerzeichen zu stoppen und nur Symbole entfernen?
Dies ist die Trimm-String-Funktion:
string Dictionary::trimString(string input){
stringstream ss;
for (int x = 0; x < (int) input.size(); x++) {
if(isalpha(input[x])){
ss << input[x];
}
}
if (ss.str().length() > 0) {
return ss.str();
} else {
return "";
}
}
„Wie kann ich verhindern trimString Funktion Entfernen Sie Leerzeichen getrennt werden und nur Symbole entfernen? " -> sind keine Leerzeichen mehr Symbole? – ForceBru
@ForceBru Wie kann ich Raum davon ausnehmen? – nanjero05
* "Wie kann ich die trimString-Funktion stoppen, indem sie Leerzeichen löscht und nur Symbole löscht" * ... 'fin >> word' liest keine Leerzeichen, da sie als Trennzeichen verwendet werden, um die Extraktion zu stoppen. also warum willst du nach Leerzeichen im Wort suchen, wenn es keine hat? –