【问题标题】:Limiting the number of characters of user input限制用户输入的字符数
【发布时间】:2013-06-19 01:34:50
【问题描述】:

我正在尝试限制用户可以输入的字符数。
不像用户输入abcde,我限制输入长度为3,
并且只考虑 abc。

有没有办法在物理上限制用户输入超过一定数量的字符?
例如,如果用户尝试输入 12345,而我将其限制为 3 个字符,则只有 123 会被输入。

我试过下面的代码:

cin.width(5);
辛 >> n;

但我已经意识到它不会物理上限制用户输入,而只会限制输入的缓冲区大小。

有没有办法做这样的事情?

+) 我正在开发控制台应用程序

【问题讨论】:

  • 您可以读取每个键,然后在用户键入 \r 或 3 时进行处理。但这不会阻止额外的字符(它只会接受 3 个字符作为用户输入和继续前进,无需等待\r)。
  • 嗯,我希望我能做这样的事情。
  • 你说的物理是什么意思?当用户尝试输入第 4 个字符时,您希望一只手从屏幕中伸出并拍打用户吗? :)
  • @tony 我不知道怎么形容它:/

标签: c++ input user-input cin


【解决方案1】:

你可以做一些奇怪的事情,比如一次读取单个字符,如果它们没有在第 4 个字符时返回,说无效输入,然后让它们重新开始,但是调用 long 更简洁、更容易尝试提交后输入无效。

【讨论】:

    【解决方案2】:

    您无法在标准控制台窗口中执行此操作,但如果您使用 c++ 使用自己的输入框创建自己的窗口,那么您将拥有更多的灵活性。

    【讨论】:

    • 有可能做这样的事情吗?
    • @Haxify 当然!许多游戏都是用 C++ 编写的,并且对某些部分有类似的限制(例如用户名选择)。但是,您不能真正使用开箱即用的 C++ 来做到这一点。你需要给自己找一个图书馆。哦,我的意思是说你不能在控制台中做到这一点。对不起,错字了。
    • 我可以让它在控制台中工作。它不会尽可能漂亮,但不会很难。
    • @chris 那么你应该发布答案的大纲。
    • @Dgrin91,我不知道...它可能弊大于利,而且仅限 Windows。
    【解决方案3】:

    你可能正在搜索这个:--

    #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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多