2017-04-30 2 views
0

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.

Antwort

0

Ohne eine Kopie von Daten aus Ihrer Datei oder einige Daten mit großer Ähnlichkeit zu sehen, ist es schwierig, viel zu helfen.

Eine Reihe von Problemen entstehen und ich vermute, dass jeder von ihnen von Bedeutung sein könnte, da Sie sich selbst "neu für die Programmierung" nennen.

starten durch einige der Forschung Lesung tun bei http://hackipedia.org/Character%20sets/Unicode,%20UTF%20and%20UCS%20encodings/UCS-2.htm

Vor allem der Abschnitt mit dem Titel: Byte-Reihenfolge Codierschemata

Wenn Ihre Daten eine Stückliste nach dem „PRG“ Label hat dann würden Sie damit zu tun haben, durch Codierung für die entsprechende Endianess ...

lesen Sie auch auf das Material nach oben an: https://msdn.microsoft.com/en-us/library/mt771556.aspx

Vor allem die Hinweis an der Unterseite ...

Dr t

+0

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

Verwandte Themen