如何强制用户在字符串中输入8个字符

how to force user to input exactly 8 characters into string

本文关键字:输入 8个 字符 字符串 何强制 用户      更新时间:2023-10-16

如何限制用户在字符串中输入8个字符?这样的东西行得通吗?

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

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

提前感谢

澄清:我想让用户在字符串中输入最多8个字符,但他可能会输入更少的字符。

您可以使用循环。。

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

考虑到我的经验,很难想象这会有所帮助(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 "

除了厌恶之外的希望

真诚奉献的noobie

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

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

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

防止用户输入超过8个
这通常用于输入密码。标准的C++输入工具在这里没有帮助。

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

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

#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循环退出。