Почему я не могу прочитать из этого файла после того, как написал в него и тоже закрыл? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь

  1. прочитать из scene.txt, выполнить вычисления и записать в stage1.txt

  2. , а затем прочитать из stage1.txt и напишите stage2.txt

  3. Наконец, прочитайте stage2.txt и напишите stage3.txt;

1 и 2 работают отлично.Но я не совсем уверен, почему я не могу сделать третий?

Я использовал freopen для перенаправления stdin и stdout, а затем перед переходом из пункта 1 в 2 я закрыл stdin и stdout.Затем снова использовал freopen с разными файлами.

Я подозреваю, что использование stringstream вызывает проблему, но не могу с уверенностью сказать.

freopen("scene.txt","r",stdin);
freopen("stage1.txt","w",stdout);

//works fine. writes to stage1.txt

fclose(stdin);
fclose(stdout);
freopen("stage1.txt","r",stdin);
freopen("stage2.txt","w",stdout);
string test;
while(getline(cin,test))
{
    if(test=="")
    {
        cout<<endl;
        continue;
    }

    point p(1);
    stringstream s(test);

    s>>p.matrix[0]>>p.matrix[1]>>p.matrix[2];
    point res;
    res=apply_transformation(v,p);
    res.print();
}

//it also does read from stage1.txt and writes to stage2.txt


fclose(stdout);
fclose(stdin);
freopen("stage2.txt","r",stdin);
freopen("stage3.txt","w",stdout);

string test3;
while(getline(cin,test3))
{
    cout<<"YES"<<endl; //never gets here. cant even read stage2.txt
    if(test3=="")
    {
        cout<<endl;
        continue;
    }

    point p(1);
    stringstream s(test3);

    s>>p.matrix[0]>>p.matrix[1]>>p.matrix[2];
    point res;
    res=apply_transformation(P,p);
    res.print();
    cout<<p.matrix[0]<<" A "<<p.matrix[1]<<" "<<p.matrix[2]<<endl;

    //cout<<test<<endl;
}

// above-mentioned loop doesn't work. cant read from stage2 and doesn't write anything to stage3.txt

Я ожидал, что пункт 3 выше сработает.Но это не так.

1 Ответ

0 голосов
/ 08 июля 2019

Мне пришлось cin.clear () до 3 и после 2. Проблема решается.Но я не знаю, почему.

...