【问题标题】:how to force user to input exactly 8 characters into string如何强制用户在字符串中准确输入 8 个字符
【发布时间】:2014-07-30 05:40:27
【问题描述】:

如何限制用户在字符串中输入 8 个字符? 像这样的东西可以吗?

string MyString;
getline(std::cin, MyString, 8);

或者可能有不同的想法来实现它

提前致谢

说明: 我想让用户在字符串中输入最多 8 个字符,但他可以输入更少。

【问题讨论】:

  • istream& getline (istream& is, string& str, char delim); 所以最后一个参数是分隔符,不是要获取的字符数。

标签: c++ string delimiter getline


【解决方案1】:
#include <iostream>
#include <string>

int main(){
    std::string str;
    bool cStr = true; //check string
    while (cStr){
        std::getline(std::cin, str);
        if (str.size() <= 8) cStr = false;
    }
}

您可以添加一个 bool 对象来使用 if 语句测试您的字符串。如果字符串大小小于或等于 8,则它会将 bool 语句通告为 false,从而允许退出 while 循环。

【讨论】:

    【解决方案2】:

    向用户请求 8 个字符和阻止用户输入超过 8 个字符是有区别的。

    向用户请求 8
    您可以向用户请求 8 个字符,但在输入换行符之前,用户可以输入任意数量的字符。这是标准控制台输入的行为。

    控制台已缓冲所有字符。根据提取方法,您将从输入缓冲区中提取 8 个字符到变量中。剩余的字符仍在缓冲区中。

    防止用户输入超过 8 个
    这通常用于输入密码。标准 C++ 输入工具在这里无济于事。

    您需要对输入源进行特定于平台的控制。您将需要读取每个字符,测试换行符,并可选择回显该字符、统一字符(如“*”)或不显示任何字符。

    由于它是特定于平台的,因此请查找适用于您平台的 API。

    【讨论】:

      【解决方案3】:

      很难认为这将有助于考虑我的经验(第 1 个月!) 在 codecademy.com 上,使用“Python”语言的人可能会这样说:

      my_string = "jackie"
      len(my_string)
      
      #would print 5
      
      if my_string is <= .....  # if my string is greater or equal to print the following
          print "name is too long "
      

      希望产生的不是厌恶

      真诚的小白

      【讨论】:

        【解决方案4】:

        你可以使用循环..

        while (MyString.length() != 8) {
          std::cout << "Enter exactly 8 characters:";
          getline(std::cin, MyString);
        }
        

        【讨论】:

          猜你喜欢
          • 2017-09-12
          • 1970-01-01
          • 2019-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多