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

时间:2014-06-09 16:17:39

标签: c++ string delimiter getline

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

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

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

提前致谢

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

4 个答案:

答案 0 :(得分:2)

你可以使用循环..

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

答案 1 :(得分:0)

很难想到这会有助于考虑我的经验(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

答案 2 :(得分:0)

从用户请求8个字符和阻止用户输入超过8个字符之间存在差异。

从用户请求8
您可以从用户请求8个字符,但允许用户输入用户想要的字符数,直到输入换行符。这是标准控制台输入的行为。

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

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

您需要特定于平台的输入源控制。您需要阅读每个字符,测试换行符,并可选择回显字符,统一字符,如&#39; *&#39;,或不显示任何字符。

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

答案 3 :(得分:0)

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

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