限制输入的字符大小

时间:2018-07-21 11:30:49

标签: c++

您好,我需要C ++程序的帮助,所以我只需要用户输入名字,如果名字超过25个字符,则会出现一些错误消息。但是我有这段代码,如果我输入26个字符,则不会出错。尝试过string.size()和string.length();

// I already included string
// first_name is string
if (first_name.size() <= 25) {
        cin >> first_name;
    }
    else {
        cout << "You must only put 25 characters";
        system("cls");
    }

2 个答案:

答案 0 :(得分:0)

这里有很多选择,但是基本的用例是:

  1. 读取字符,直到达到终止条件或限制
  2. 阅读直到终止条件,然后截断
  3. 实施特定字符处理。

在所有这些用例中,您都需要确定是接受还是跳过空格。

对于以下所有示例,假定终止条件为行尾(也就是按Enter键)。

读取直到达到限制

这里最简单的方法是使用缓冲区,将其转换为字符串:

const size_t MAXIMUM_CHARS = 25;
static char buffer[MAXIMUM_CHARS + 1]; // An extra for the terminating nul character.
std::cout << "Enter name";
std::cin.getline(buffer, MAXIMUM_CHARS, '\n');
const std::string name(buffer);

阅读,然后截断

读取字符,然后截断为最大大小:

const size_t MAXIMUM_CHARS = 25;
std::string name;
std::cout << "Enter name";
std::getline(std::cin, name);
if (name.length() > MAXIMUM_CHARS)
{
  name.erase(MAXIMUM_CHARS);
}

特定字符处理

char c;
size_t chars_read;
std::cout << "Enter name";
std::string name;
while (std::cin >> c)
{
  if (valid(c))
  {
    name += c;
  }
  else
  {
    break;
  }
  ++chars_read;
  if (chars_read > MAXIMUM_CHARS)
  {
    break;
  }
}

摘要

可以读取和限制数量。只要确定终止条件和限制,就有多种方法可以实现此目的。我没有发布的一些技术涉及从操作系统获取按键信息并编写自己的键盘(输入流)驱动程序。选择是您的。

答案 1 :(得分:-1)

您应该在输入名称后检查 大小,然后再次询问是否太长。就像

std::string first_name;
for (;;)
{
    cout << "Please enter your name ";
    cin >> first_name;
    if (first_name.size() <= 25)
        break;
    cout << "You must only put 25 characters\n";
}