Печать символов в одну строку с использованием функции sleep () после каждого символа - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть некоторые трудности с моей "программой". Я хотел бы напечатать текст из моего файла для программирования в ОДНОЙ строке (горизонтальное положение), используя функцию sleep () после каждого символа (используя для l oop), но это не работает. (В терминале я вижу пустое пространство, ничего не печатается).

    #include <iostream>
#include <fstream>
#include <unistd.h>
//#include <cstdlib>
using namespace std;

int main()
{
fstream plik;
string linia;
plik.open("ala.txt",ios::in);
getline(plik,linia);

    //string tekst;
    //tekst="Ala ma kota a kto ma Ale. Basia ma psa i rybki.";
    for(int i=0;i<=linia.length();i++)
    {
    cout<<linia[i];
    sleep(1);
    }

Но когда я использую '\ n' рядом с "cout<<line[i]<<'\n';", все в порядке, но печатается в вертикальном положении.

 #include <iostream>
#include <fstream>
#include <unistd.h>
//#include <cstdlib>
using namespace std;

int main()
{
fstream plik;
string linia;
plik.open("ala.txt",ios::in);
getline(plik,linia);

    //string tekst;
    //tekst="Ala ma kota a kto ma Ale. Basia ma psa i rybki.";
    for(int i=0;i<=linia.length();i++)
    {
    cout<<linia[i]<<'\n';
    sleep(1);
    }

Можете ли вы помочь мне?

1 Ответ

2 голосов
/ 09 апреля 2020

Что вам не хватает, так это грипп sh побочный эффект символов новой строки и std::endl. Вы заметите, что если вы будете ждать достаточно долго, чтобы распечатать весь файл (хотя вывод не будет сброшен на вывод на экран), он все появится одновременно с выходом из системы.

Чтобы исправить это, явно введите flu sh с std::flush

cout<<i<<flush;
...