C++ 限制用户输入的字符数

C++ 限制用户输入的字符数,c++,input,user-input,cin,C++,Input,User Input,Cin,我试图限制用户可以输入的字符数。 这与用户输入abcde不同,我将输入长度限制为3, 而且只考虑了abc 有没有办法限制用户输入超过一定数量的字符? 例如,如果用户尝试键入12345,并且我将其限制为3个字符,则只会键入123 我尝试了以下代码: 宽度(5) cin>>n 但我意识到它并没有物理上限制用户输入,而是只限制输入的缓冲区大小 有没有办法做到这一点 “我正在控制台应用程序中,你不能在一个标准控制台窗口中完成它,但是如果你用C++来用你自己的输入框来制作你自己的窗口,那么你就有了更多的灵

我试图限制用户可以输入的字符数。
这与用户输入abcde不同,我将输入长度限制为3,
而且只考虑了abc

有没有办法限制用户输入超过一定数量的字符?
例如,如果用户尝试键入12345,并且我将其限制为3个字符,则只会键入123

我尝试了以下代码:

宽度(5)
cin>>n

但我意识到它并没有物理上限制用户输入,而是只限制输入的缓冲区大小

有没有办法做到这一点


“我正在控制台应用程序

中,你不能在一个标准控制台窗口中完成它,但是如果你用C++来用你自己的输入框来制作你自己的窗口,那么你就有了更多的灵活性。”P> > P>你不能在标准控制台窗口中执行它,但是如果你用C++来用自己的输入框来制作自己的窗口,那么你就有了更多的灵活性。p> 你可以做一些奇怪的事情,比如一次读一个字符,如果第四个字符没有按回车键,就说输入无效,然后让它们重新开始,但是,在他们尝试提交长输入后,将其称为无效会更干净、更容易。

你可以做一些奇怪的事情,比如一次读取一个字符,如果他们没有按第4个字符返回,则说无效输入,然后让他们重新开始,但在他们尝试提交长输入无效后,只调用长输入无效会更干净、更容易。

您可能正在搜索以下内容:--

#包括
#包括
使用名称空间std;
int main()
{
字符串MyInput;

std::cout您可能正在搜索以下内容:--

#包括
#包括
使用名称空间std;
int main()
{
字符串MyInput;

std::您是否可以读取每个键,然后在用户键入
\r
或在3时进行处理。但这不会阻止额外的字符(它只接受3个字符作为用户输入,然后在不等待
\r
的情况下继续操作).Hmm,我希望我能这样做。你说的身体是什么意思?当用户试图键入第4个字符时,你想让一只手从屏幕上伸出来打她一巴掌吗?:)@tony我不知道该如何描述它:/你可以读取每个键,然后在用户键入
\r
或3时进行处理。但这不会阻止第4个字符e额外的字符(它只需接受3个字符作为用户输入,无需等待
\r
)嗯,我希望我能做这样的事情。你的身体是什么意思?你想在屏幕上打一个手,然后在用户尝试输入第4个字符时打一个耳光?):我不知道该怎么形容它:[是否有可能做这样的事?]当然,HOXIATE!很多游戏都是用C++编程的,并且有类似的限制。对于某些部分(例如用户名选择)但是,你不能真正用C++来做这件事。你需要找到一个库。哦,我的意思是你不能在控制台上做这个。抱歉,打字。我可以让它在控制台上工作。它不会像它那样漂亮,但是它不会很难。“克里斯,你应该把答案的轮廓写出来。”dgnn91,我不知道……可能会。O弊大于利,它将是窗口。只有这样做才有可能?“当然,HaxI化!很多游戏都是用C++编程的,对某些部分(如用户名选择)有类似的限制。但是,你不能真正用C++来做这件事。你需要找到一个库。哦,我的意思是你不能在控制台上做这个。抱歉,打字。我可以让它在控制台上工作。它不会像它那样漂亮,但是它不会很难。“克里斯,你应该把答案的轮廓写出来。”dgnn91,我不知道……可能会。哦,弊大于利,只能是窗户。
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string MyInput;
    std::cout << "INPUT HERE: ";
    std::getline(cin,MyInput);
    if (MyInput.length() == 3)
    {
        std::cout << "OKAY IT IS THREE CHARS" << std::endl;
    }
    else if (!(MyInput.length() == 3))
    {
        MyInput.erase(MyInput.begin()+3,MyInput.end());
        std::cout << "Look: " << MyInput << std::endl;
    }
}