Это происходит из-за того, что неявный фид строки, также известный как символ новой строки \n
, добавляется ко всем пользовательским вводам терминала, поскольку он сообщает потоку начать новую строку. Вы можете смело учитывать это, используя std::getline
при проверке нескольких строк ввода пользователя. Поведение по умолчанию std::getline
будет читать все до и включая символ новой строки \n
из объекта входного потока, который в этом случае является std::cin
.
#include
#include
int main()
{
std::string name;
std::string state;
if (std::getline(std::cin, name) && std::getline(std::cin, state))
{
std::cout << "Your name is " << name << " and you live in " << state;
}
return 0;
}
Input: "John" "New Hampshire" Output: "Your name is John and you live in New Hampshire"
Короче говоря, чем меньше время среза задачи, тем более гладкой будет многозадачность пользователю. С другой стороны, большее количество переключений задач увеличивает время, затрачиваемое на переключение задач вместо их запуска.
Более длительное время со многими задачами означает повторное рассмотрение одной и той же задачи на большом расстоянии (например, более резкое поведение).
(Примечание: я обычно использую переключатели задач 1 мс на MCU очень низкого уровня с очень хорошими результатами, всего около 5-10 задач.)