2016-12-30 17 views
0

i eine Linie zu entfernen versuchen, die ein bestimmtes Wort aus Textdatei enthält, aber es funktioniert nur im Voraus Danke nichteine Zeile zu löschen, die ein Wort enthalten

void deleteline() 
{ 
    string line, deletecontact; 
    cout << "Plase enter the contact (name or number) to delete:"; 
    cin >> deletecontact; 
    ifstream file; 
    ofstream outfile; 
    file.open("data.txt"); 
    outfile.open("newM.txt"); 
    while (getline(file, line)) { 
     if (line != deletecontact) { 
      outfile << line << endl; 
     } 
    } 
    outfile.close(); 
    file.close(); 
    remove("movieList.txt"); 
    rename("newM.txt", "data.txt"); 
} 

+2

[Es funktioniert nicht] (http://importblogkit.com/2015/07 /funktioniert nicht/)? – wally

+0

'remove (" movieList.txt ");' Sollte das nicht 'remove (" data.txt ") sein;'? –

Antwort

3

Sie entfernen Linien, wenn Sie sind gleich (dh line != deleteContact). Wenn Sie Zeilen entfernen möchten, die, wie Sie erwähnt haben, nur dieses Wort enthalten, sollten Sie etwas wie das folgende schreiben:

if (strstr(line.c_str(), deleteContact.c_str()) == nullptr) ... 
+2

Siehe auch std :: string :: find http://www.cplusplus.com/reference/string/string/find/ – Waxrat

+0

danke, aber es ist noch nicht die Zeile entfernen –

+0

Verwenden Sie 'std :: search' für eine Groß-und Kleinschreibung Suche. 'strstr' ist eher eine 'C'-Funktion. –

Verwandte Themen