Необходимо спрашивать юзера, уверен ли он в количестве потоков, которое ввел
while (true) {
int newThreadCount;
string choice;
cout << "Количесво потоков: ";
cin >> newThreadCount;
cout << endl;
if (newThreadCount > boost::thread::hardware_concurrency()*2) {
cout << "Указанное количество потоков сильно превышает количество ядер процессора, прироста производительности не будет. Продолжить? (y\n)";
while (true) {
getline(cin, choice);
if (choice == "n")
break;
else if (choice == "y")
break;
}
}
}
*Код, выполняемый после подтверждения*
Как правильно организовать подтверждение (y\n)? Если ввел y
, то код должен продолжаться, если n
- должно повторно спрашивать кол-во потоков, если он ввел не y\n, то должно код должен требовать ввести y
либо n
.
Ну, если нужно обязательно ввод в нижнем регистре и именно y/n
(т.е. yes
- неверный ввод), то, например, так:
bool yes()
{
string s;
for(;;)
{
cout << "(y/n)? ";
if (!getline(cin,s,'\n')) return false;
if (s == "y") return true;
if (s == "n") return false;
cout << "Wrong input! ";
}
}
Пример из книги Бьерна Страуструпа, но он с количеством попыток - tries
...
int tries = 1;
while (tries < 4)
{
cout << "Do you want to proceed (y or n) ?\n";
char answer = 0;
cin >> answer; //считать ответ
switch (answer)
{
case 'y':
return true;
case 'n':
return false;
default:
cout<<"Sorry, I don't understand that.\n" ;
tries = tries + 1;
}
}
Проект Visual Studio 2015: кириллица в консоли на вводе и выводе.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день, помогите разобратьсяПри выводе на экран файла в обратном порядке появляются лишние переводы строки