C ++当时打印一个字母。如何?

时间:2015-05-24 17:20:23

标签: c++ windows sleep

让我说我有一个包含消息的字符串。如果我想在屏幕上打印它,我可以cout<<string, or cout<<"Hello!"。但邮件会立即打印出来。

所以我要找的是一个函数,它将一条消息和一个数字作为输入变量,并使用数字作为延迟器,一次打印一个字母的消息。

像这样:

void slow_print("Hello!", 5);这意味着打印每个字母,它们之间有5秒的延迟。

不幸的是,我不知道怎么做(除了延迟,你可以使用Sleep()函数),所以我想出了这个丑陋的解决方案:

string A = "A", B = "B", C = "C", D = "D", E = "E" .... //etcetera...

然后我会声明一个包含这些字母的向量。那么我可以做一个for循环,例如,那时打印一个矢量单元格。

vect[dimension] = { H,e,l,l,o,_,h,o,w,_,a,r,e,_,y,o,u }

        for (int i = 0; i<dimension; i++)
    { 
      cout<<vect[dimension];
      Sleep(delay_time);
    }

这是我找到的唯一解决方案。它有效,但使用起来非常不舒服。

有没有人有更好的主意? 我希望社区可以帮助我:)。

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

您实际上可以索引std::string的各个字符。 你的功能可能如下所示:

void slow_print(const std::string& str, int delay_time) {
    for (size_t i = 0; i != str.size(); ++i) { 
        std::cout << str[i];
        Sleep(delay_time);
    }
}

答案 1 :(得分:0)

你可以使用类似的东西:

unsigned long k;
std::string str="Hello"
for (k=0;k<str.size();++k) {
    std::cout << str[k]; Sleep(5);
}

您可以索引字符串。如果str等于"Hello",则str[0]等于'H'

答案 2 :(得分:0)

如果您使用c ++ 11或更高版本......

std::string str("hello.");
std::for_each(str.begin(), str.end(), [](char c){
    std::cout << c;
    Sleep(1000);
});

std::for_each来自&lt; algorithm&gt;。