Простой оператор else заставляет его работать как
1..100 | ForEach-Object {
if ($_ % 7 -ne 0 ) {
#do nothing
} else {
Write-Host "$($_) is a multiple of 7"
}
}
или в одном конвейере
1..100 | ForEach-Object { if ($_ % 7 -ne 0 ) {} else {Write-Host "$($_) is a multiple of 7"}}
, но более элегантным решением является инвертирование вашего теста и создание вывода за ваши успехи
1..100 | ForEach-Object {if ($_ % 7 -eq 0 ) {Write-Host "$($_) is a multiple of 7"}}
Канонический цикл чтения в C ++:
while (getline(cin, str)) {
}
if (cin.bad()) {
// IO error
} else if (!cin.eof()) {
// format error (not possible with getline but possible with operator>>)
} else {
// format error (not possible with getline but possible with operator>>)
// or end of file (can't make the difference)
}
Просто прочтите, а затем убедитесь, что операция чтения прошла успешно:
std::getline(std::cin, str);
if(!std::cin)
{
std::cout << "failure\n";
}
Поскольку сбой может быть вызван рядом причин, вы можете использовать функцию-член eof
, чтобы увидеть, что произошло на самом деле EOF:
std::getline(std::cin, str);
if(!std::cin)
{
if(std::cin.eof())
std::cout << "EOF\n";
else
std::cout << "other failure\n";
}
getline
возвращает поток, чтобы вы могли писать более компактно :
if(!std::getline(std::cin, str))