【问题标题】:Printing characters in one line, with using sleep() function after each char在一行中打印字符,在每个字符后使用 sleep() 函数
【发布时间】:2020-07-21 20:46:27
【问题描述】:

我的“程序”有些困难。我想在每个字符之后使用 sleep() 函数打印文件中的文本以在一行(水平位置)中编程(使用 for 循环),但它不起作用。 (在终端中我看到空白,没有打印任何内容)。

    #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);
    }

但是当我在 "cout&lt;&lt;line[i]&lt;&lt;'\n';" 附近使用 '\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);
    }

你能帮帮我吗?

【问题讨论】:

    标签: c++ loops sleep


    【解决方案1】:

    您缺少的是换行符和std::endl 的冲洗副作用。您会注意到,如果您等待足够长的时间以打印整个文件(尽管输出没有刷新到屏幕输出),它会在系统退出时同时出现。

    要解决此问题,请使用 std::flush 显式刷新输出

    cout<<i<<flush;
    

    【讨论】:

    • 很高兴听到@Anahan89。请记住将答案标记为关闭问题的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多