2016-09-05 5 views
-2

Я пытаюсь найти одинаковые строки между двумя текстовыми файлами.getline читает одну и ту же строку (C++, istream)

while (getline (texta,str1)){ 
     while (getline (textb,str2)){ 
     cout<<str1<<str2<<endl; 
    }} 

Сначала во время работы очень хорошо, но второй только что прочитал первую часть текста и затем ушел. Я пробовал разные тексты, но не работает.

Если вы хотите посмотреть весь код:

void similars(string text1,string text2){ 
    string str1,str2; 
    ifstream texta(text1.c_str());   
    ifstream textb(text2.c_str()); 

    if(texta.is_open() && textb.is_open()){ 
     while (getline (texta,str1)){ 
      while (getline (textb,str2){ 
       cout<<str1<<str2<<endl; 
      } 
     } 
    } 
    else cout << "Unable to open file"; 

} 
+0

Пожалуйста, разместите свой образец ввода, сгенерированный вывод и что не так сгенерированным выходом. –

+0

вам не хватает ')' для вашего второго цикла while BTW – vu1p3n0x

+0

Да, я просто видел: D спасибо –

ответ

0

не смешивать вещи эти не должны делать рассмотрим следующий пример:

#include <iostream> 
#include <string> 
#include <fstream> 
using namespace std; 


void similars(string text1, string text2) 
{ 
    string str1, str2; 
    ifstream texta(text1.c_str(), ios::in);   
    ifstream textb(text2.c_str(), ios::in); 

    cout << "text1: " << endl << endl; 
    while(!texta.eof()) 
    { 
     getline (texta, str1); 
     cout << str1 << endl; 
    } 

    cout << endl << endl; 

    texta.close(); // closing safely the file 

    cout << "text2: " << endl << endl; 
    while(!textb.eof()) 
    { 
     getline (textb, str2, '\n'); 
     cout << str2 << endl; 
    } 

    textb.close(); 

    cout << endl; 

} 

int main() 
{ 
    system("color 1f"); 

    string sText1 = "data1.txt"; 
    string sText2 = "data2.txt"; 
    similars(sText1, sText2); 

    system("pause"); 
    return 0; 
} 

просто создать два текстовых файла с помощью блокнота или любого текстовый редактор, переименуйте их в «text1.txt», «text2.txt» и поместите в них текст и сохраните и закройте. затем запустите программу.