Хех, это старый вопрос, который мог бы использовать лучший ответ.
Пользовательский ввод должен быть получен как строка, а затем попытаться преобразовать в желаемый тип данных. Удобно, это также позволяет вам отвечать на вопросы типа «какой тип данных является моим вводом?»
Вот функция, которую я использую много. Другие варианты существуют, например, в Boost, но основная предпосылка одна и та же: попытайтесь выполнить преобразование типа string → и убедитесь в успехе или неудаче:
template <typename T>
std::optional <T> string_to( const std::string& s )
{
std::istringstream ss( s );
T result;
ss >> result >> std::ws; // attempt the conversion
if (ss.eof()) return result; // success
return {}; // failure
}
Использование типа optional
- это просто в одну сторону. Вы также можете выбросить исключение или вернуть значение по умолчанию при сбое. Что бы ни работало для вашей ситуации.
Вот пример его использования:
int n;
std::cout << "n? ";
{
std::string s;
getline( std::cin, s );
auto x = string_to <int> ( s );
if (!x) return complain();
n = *x;
}
std::cout << "Multiply that by seven to get " << (7 * n) << ".\n";
ограничения и идентификация типа
Чтобы это работало, Конечно, должен существовать метод однозначного извлечения вашего типа данных из потока. Это естественный порядок вещей на C ++, то есть бизнес как обычно. Так что никаких сюрпризов здесь нет.
Следующее предостережение в том, что некоторые типы объединяют других. Например, если вы пытаетесь различать int
и double
, сначала проверьте на int
, поскольку все, что преобразуется в int
, также является double
.
По указанной вами ссылке VNET доступен для планов обслуживания приложений Standard, Premium и Isolated.
Функции плана потребления не поддерживают VNET, поэтому было бы разрешено запускать ваши функции Azure в App Service Mode . Ссылка: https://docs.microsoft.com/azure/azure-functions/functions-create-vnet