gpt4 book ai didi

c++ - 在 C++ 中一次输出一个字母?

转载 作者:行者123 更新时间:2023-11-28 05:57:24 30 4
gpt4 key购买 nike

我已经看到了这个问题的几个解决方案,但我仍然遇到了问题。我已经尝试了我在这个网站上看到的几种解决方案,但我一直遇到同样的问题。我不确定如何让它工作,我也不确定为什么它不起作用,因为我是 C++ 的新手。

我正在尝试做的事情的简要说明:我正在为我学校的视频游戏设计俱乐部编写一个简单的老式基于文本的故事/游戏,并且在几个点上我让用户做出决定,或输入名称等内容,然后在输出行中使用,因为它会被多次引用。我这样做没有问题,使用像这样简单的东西:

#include <iostream>
#include <string>
#include <limits>
#include <windows.h>
using namespace std;


int main(){

string name, place ;
cout << "???: What is your name? ";
getline (cin, name);
cout << "???: Hello, " << name << "!\n" << "\n";
}

我的问题是我想让文本一次出现一个字符,比如对话,但是每当我尝试使用我看过别人写的东西时,它似乎不太喜欢它.我试过但现在可以再次找到的唯一一个是:

#include <iostream>
#include <unistd.h> // include <windows.h> on windows

// function to output as if it was being typed
void type_text(const std::string& text)
{
// loop through each character in the text
for (std::size_t i = 0; i < text.size(); ++i)
{
// output one character
// flush to make sure the output is not delayed
std::cout << text[i] << std::flush;

// sleep 60 milliseconds
usleep(60000); // use Sleep on windows
}
}
int main()
{
type_text("Hej hej hallå!");
}

显然,当我尝试将该代码与我编写的内容一起使用时,我尝试将名称输出回用户时存在某种冲突。我不太确定问题出在哪里,因为我是 C++ 的新手,有人可以帮助我吗?

最佳答案

考虑使用 std::this_thread::sleep_for ,因为它是标准的 C++11。示例:

#include <iostream>
#include <thread> // standard C++11

// function to output as if it was being typed
void type_text(const std::string& text)
{
// loop through each character in the text
for (std::size_t i = 0; i < text.size(); ++i)
{
// output one character
// flush to make sure the output is not delayed
std::cout << text[i] << std::flush;

// sleep 60 milliseconds
std::this_thread::sleep_for(std::chrono::milliseconds(60));
}
}
int main()
{
type_text("Hello, World!");
}

如果您可以访问 C++14 编译器,您可以简单地使用 std::chrono user-defined literals并具有更“自然”的语法:

using namespace std::literals;
std::this_thread::sleep_for(60ms);

关于c++ - 在 C++ 中一次输出一个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882822/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com