После ввода логина, когда вылазит ввод пароля и вводишь пароль, почему отображается введённый логин в строке для ввода пароля, подскажи пж как от этого избавится (
Чтобы избавиться от этой проблемы, вам нужно использовать функцию cin.ignore() после ввода логина. Эта функция очищает буфер ввода, что позволяет корректно вводить следующие данные. Вот пример использования: cout > login;
cin.ignore(numeric_limits::max(), '\n');
Может быть до этого был какой-то ввод с помощью cin >> ? В таком случае в буфере ввода остается висеть enter. Его, как пустую строку, считывает getline в поле логина. А сам логин уже попадает в cin >> password.
Подробнее:
оператор >> производит форматированный ввод данных, признаком окончания считается любой пробельный символ (пробел, таб, энтер). Сам пробельный символ не считывается. До оператора эти символы игнорируются, а после - остаются в буфере.
getline(cin, string) - использует символ enter как признак окончания строки. И сам этот символ стирает из буфера. Если же при вызове getline первым идет enter это считается пустой строкой (но тем не менее пустая строка - это тоже строка и она сохраняется в string.