getline读同一行(C ++,istream)

时间:2016-09-05 22:25:59

标签: c++ iostream

我尝试在两个文本文件之间找到相同的行。

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"; 

}

1 个答案:

答案 0 :(得分: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”并在其中放入一些文本并保存并关闭。然后运行程序。