Вы можете объединить два перехода или больше, а visibility
- это то, что пригодится на этот раз.
div {
border: 1px solid #eee;
}
div > ul {
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s linear;
}
div:hover > ul {
visibility: visible;
opacity: 1;
}
- Item 1
- Item 2
- Item 3
( Не забывайте, что префиксы поставщика к свойству transition
)
Подробнее в в этой статье
Я хотел бы использовать std::getline
и std::string
для чтения всей строки, а затем только выйти из цикла, когда вы можете преобразовать всю строку в double.
#include <string>
#include <sstream>
int main()
{
std::string line;
double d;
while (std::getline(std::cin, line))
{
std::stringstream ss(line);
if (ss >> d)
{
if (ss.eof())
{ // Success
break;
}
}
std::cout << "Error!" << std::endl;
}
std::cout << "Finally: " << d << std::endl;
}
Когда cin встречает вход, он не может правильно прочитать указанную переменную (например, ввод символа в целочисленную переменную), он переходит в состояние ошибки и оставляет входной сигнал в его буфере.
Вы должны сделать несколько вещей, чтобы правильно справиться с этим сценарием.
В следующем коде представлен один из многочисленных способов выполнения эти три вещи.
#include<iostream>
#include<limits>
using namespace std;
int main()
{
cout << "Enter an int: ";
int x = 0;
while(!(cin >> x)){
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Try again: ";
}
cout << "You enterd: " << x << endl;
}
Вы могли бы просто передать какое-то большое значение cin.ignore как 1000, и оно, вероятно, будет вести себя точно так же для всех практических целей.
Вы можете также проверите cin после попытки ввода и обработайте его таким образом, что-то вроде if (! cin) {// очистите ошибку}.
Проверьте ссылку istream для других функций-членов для обработки состояния потока: http://cplusplus.co м / ссылка / iostream / IStream /