在一行中打印字符,在每个字符后使用 sleep() 函数
Printing characters in one line, with using sleep() function after each char
我的 "program" 遇到了一些困难。我想在每个字符之后使用 sleep() 函数(使用 for 循环)将文件中的文本打印到一行(水平位置)中进行编程,但它不起作用。 (在终端中我看到空白 space,没有打印任何内容)。
#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<<line[i]<<'\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);
}
你能帮帮我吗?
您缺少的是换行符和 std::endl
的齐平副作用。你会注意到,如果你等待足够长的时间让整个文件被打印出来(尽管输出没有刷新到屏幕输出),它会在系统退出时同时出现。
要解决此问题,请使用 std::flush
显式刷新输出
cout<<i<<flush;
我的 "program" 遇到了一些困难。我想在每个字符之后使用 sleep() 函数(使用 for 循环)将文件中的文本打印到一行(水平位置)中进行编程,但它不起作用。 (在终端中我看到空白 space,没有打印任何内容)。
#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<<line[i]<<'\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);
}
你能帮帮我吗?
您缺少的是换行符和 std::endl
的齐平副作用。你会注意到,如果你等待足够长的时间让整个文件被打印出来(尽管输出没有刷新到屏幕输出),它会在系统退出时同时出现。
要解决此问题,请使用 std::flush
cout<<i<<flush;