Я пытаюсь получить дату из CLI. Однако сначала я получаю его как строку, потому что программа ведет себя неправильно, когда я ввожу какое-то недопустимое значение, например, строку при использовании std::cin ›› непосредственно в int. Вот мой код до сих пор, и он не ведет себя так, как ожидалось. После ввода даты в формате мм/дд/гггг по-прежнему отображается сообщение Мы не смогли интерпретировать ваш ввод. Вот мой код ниже, любая помощь будет принята с благодарностью:
while (true)
{
bool success = true;
std::cout << "Enter the date added to inventory in the format mm/dd/yyyy: ";
std::string mm, dd, yyyy;
std::string temp;
std::getline(std::cin,temp);
for (int i=0; i<temp.size(); i++)
{
if ((temp[i]=='/') || (temp[i]='\\') || (temp[i] == '-'))
temp[i] = ' ';
}
std::stringstream datestream(temp);
datestream >> mm >> dd >> yyyy;
try {
date->month = static_cast<char>(std::stoi(mm.c_str()));
date->day = static_cast<char>(std::stoi(dd.c_str()));
date->year = static_cast<int>(std::stoi(yyyy.c_str()));
} catch (std::invalid_argument e)
{
std::cout << "We could not interpret your input. \n";
success = false;
} catch (std::out_of_range e)
{
std::cout << "Your input was too large. Please try a smaller number a smaller number for dd, mm, and yyyy. \n";
success = false;
}
if (success)
break;
}
(temp[i]='\\')
это задание, а не сравнение. Сначала я этого не заметил, но понял это с помощью простого std::cout здесь: https://ideone.com/eTz6ld - person drescherjm   schedule 02.02.2021