我想使用 "cout" 命令慢慢打印文本,但我真的找不到任何解决方案



我想像这个例子一样逐个字母慢慢地打印文本

//example
int main()
{
string message = "Lorem ipsum dolor sit amet, nconsectetur adipisicing elit. Voluptatum, porro nnesciunt laboriosam adipisci provident eum?n";
slow_print(message, 30);
return 0;
}

但是我想让这个效果与 cout 命令一起使用,但我找不到任何解决方案。如果有人知道如何解决这个问题,请帮助我

好的,让我们使用cout来做到这一点。cout单独做不到,你需要一些io操纵器或类似的。我将使用一个类型来指示字符串应该慢慢打印:

struct slowly_printing_string { 
std::string data; 
long int delay; 
};

接下来,我们为此类型提供一个输出运算符:

std::ostream& operator<<(std::ostream& out, const slowly_printing_string& s) {
for (const auto& c : s.data) {
out << c << std::flush;        
std::this_thread::sleep_for(std::chrono::milliseconds(s.delay));
}
return out;
}

它打印单个字符,刷新流(否则可能会在以后的某个时间点看到完整的字符串(,并等待指定的时间。

你可以这样称呼它:

std::cout << slowly_printing_string{"hello world",1000};

完整示例

我可以通过这段代码来做到这一点,但如果你正在向企业发展,我不推荐这段代码:

#include <iostream>
#define LENGTH(x) (sizeof(x) / sizeof(x[0]))
using namespace std;
void printSlowCharacters(char * strToPrint) {
while(*strToPrint) {
cout << *strToPrint++ << endl;
system("sleep 5");
}
}

int main() {
char * nome = "Davi";
printSlowCharacters(nome);
return 0;    
}

您可以使用#include <windows.h>,然后在循环中单独打印每个字符并将其与Sleep(time_in_ms)交织在一起。

怎么可能?每个std::string都是一个字符数组,类似于char*,这样您就可以通过索引访问每个字符。

相关内容