Ich muss ein Programm schreiben, das eine Textdatei durchsucht und eine Liste von Namen erstellt, die diese Datei enthält. Jeder Name wird nach "[PRG]" gesetzt. Ich möchte also nach "PRG" suchen und dann das nächste Wort lesen. Ich habe jedoch ein Problem, weil die Codierung dieser Datei UCS-2 LE ist. Ich habe herausgefunden, dass ich anstelle von "string" Variablen "wstring" verwenden muss. Aber ich sehe, dass ich merkwürdige Werte aus meiner Datei lese und ich kann sie nicht mit "PRG" vergleichen. HierC++ Suche nach einer Phrase in einer Datei mit UCS-2 LE Codierung
ist der Code:
int main() {
wstring textBuff; // Buffor for reading text from a file
wstring searchBuff = L"PRG"; // Variable containing searching phrase
wifstream file;
file.open("programs.prg", ios::in | ios::binary);
if (file.good()) {
// Reading file and listing every word after "PRG" phrase
while (!file.eof()) {
file >> textBuff;
if (textBuff.find(searchBuff) != string::npos)
wcout << textBuff << endl;
}
}
file.close();
system("pause");
return 0;
}
ich Programmierung bin neu, so tut mir leid, wenn meine Frage trivial ist, aber ich bin fest, und ich habe keine Ahnung, was kann ich sonst noch tun. Vielen Dank im Voraus. Hier
ist die prg-Datei Ich versuche, Daten von bekommen: .prg file
Es enthält Haufen anderer Daten, aber was will ich tun, ist die Liste der Namen der Backprogramme zu machen. Also möchte ich nach [PRG] suchen, dann zwei weitere Wörter lesen und dann den Rest der Zeile bekommen, was der Name des Backprogramms ist.
Vielen Dank für Ihre Antwort. Ich habe die Datei zu meinem Hauptpost hinzugefügt. Nach dem Debuggen des Programms sehe ich, dass der erste Wert "'ÿ', 'þ', '[', '\ 0', 'T' '\ 0', 'Y', '\ 0', 'P' 'ist. \ 0 ''] '"statt nur" [TYP] ". Ich denke, dass die ersten zwei Charaktere BOM sein müssen, aber ich weiß nicht wirklich, was ich dagegen tun kann. Gibt es eine Möglichkeit, sie los zu werden? Ich brauche nur die "Finde" -Funktion, um zu arbeiten. Es ist der einzige Teil dieses Programms, der nicht funktioniert. – WhiteBambo