C++ 如何在c++;避免空位

C++ 如何在c++;避免空位,c++,arrays,C++,Arrays,我正在制作一个密码程序,当您从字符数组中输入密码时,我想检查是否使用了所有数组空间。如果C++自动填充空括号,我如何评估?< P>一种方法是用0初始化数组,用用户口令填充它,然后在数组中查找第一个零,这将告诉用户输入了多少字符。 char password[10]; std::fill(password, sizeof(password), 0); std::cin >> password; size_t realEnteredPasswordLength = strlen(pas

我正在制作一个密码程序,当您从字符数组中输入密码时,我想检查是否使用了所有数组空间。如果C++自动填充空括号,我如何评估?

< P>一种方法是用0初始化数组,用用户口令填充它,然后在数组中查找第一个零,这将告诉用户输入了多少字符。
char password[10];
std::fill(password, sizeof(password), 0);
std::cin >> password;

size_t realEnteredPasswordLength = strlen(password);
您应该使用将行作为
std::string
读取,而不是将其读入数组。 当用户输入的密码超过您的10个字符时会发生什么情况?乌布发生了,你不想这样

std::string password;
std::getline(std::cin, password);
if (password.size() != 10) {
    // Take appropriate action.
}

要检查读取的字符数,可以执行以下操作:

  char c[10];
  std::cin >> c;
  std::cout << strlen(c);
charc[10];
标准:cin>>c;
std::cout>。将在数组末尾自动附加一个空字符。请记住,只有在不包含任何空格字符的情况下,才会读取整个密码。要阅读整行文字,您可以这样做

   char c[10];
   std::cin.getline(c, 10);
   std::cout << strlen(c);
charc[10];
标准:cin.getline(c,10);

std::cout“空白”是什么意思?@MartinHeralecký示例我们有一个字符[10],但您只输入6个字符,我如何获得该长度?将代码张贴在此处,您正在读取输入(密码)的位置来自用户。@MartinHeralecký一个简单的cin>>字符dude@MartinHeralecký输入为“123456”,但数组显示了这一点,但随机生成的字符也用于完成数组
   std::string s;
   getline(std::cin, s);
   std::cout << s.size();