Последовательный вывод букв одна за другой

Как сделать так, чтобы слово не появилось сразу, а буква за буквой. В коде ниже Hello World! появляется сразу и полностью. Я пишу на cxxdroid, так как пк нет у меня и использую версию c++ 17.

#include <iostream>
#include <conio.h>
#include <windows.h>
#include <ctime>

using namespace std;

int main(int argc, char *argv[]) {
    char textSleep[] = {'h','e','l','l','o','w','o','r','l','d','!'};
    int j = sizeof(textSleep)/sizeof(char);
    for(int i = 0; i < j; i++) {
        cout << textSleep[i];
        Sleep(200);
    }
    return 0;
}

Ответы (2 шт):

Автор решения: CameL
  1. Функция Sleep() относится к библиотеке <windows.h>. А значит по понятнам причинам, на linux и онлайн - компиляторах работать не будет. Как вариант замены - библиотека <unistd.h>, и функция usleep()

  2. Если мы хотим вывести в одну строку, то необходимо очищать буфер, тк иначе все выведется моментально. Для этого можно использовать, библиотеку <stdio.h> и функцию fflush(stdout)

Код программы:

#include <iostream>
#include <ctime>
#include <unistd.h>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[]) {
    char textSleep[] = {'h','e','l','l','o','w','o','r','l','d','!'};
    int j = sizeof(textSleep)/sizeof(char);
    for(int i = 0; i < j; i++) {
        cout << textSleep[i] << " ";
        usleep(20000);
        fflush(stdout);
    }
    return 0;
}
→ Ссылка
Автор решения: needKVAS

Ожидание можно сделать и средствами стандартной библиотеки.

#include <iostream>
#include <chrono>
#include <thread>

int main(int argc, char *argv[]) {
    char textSleep[] = {'h','e','l','l','o','w','o','r','l','d','!'};
    int j = sizeof(textSleep)/sizeof(char);
    for(int i = 0; i < j; i++) {
        std::cout << textSleep[i] << std::flush;
        //или std::cout.flush();
        std::this_thread::sleep_for(std::chrono::milliseconds(200));
    }
    return 0;
}
→ Ссылка