Еще один, довольно отличный подход: используйте специальную локаль, которая обрабатывает запятые как пробел:
#include <locale>
#include <vector>
struct csv_reader: std::ctype<char> {
csv_reader(): std::ctype<char>(get_table()) {}
static std::ctype_base::mask const* get_table() {
static std::vector<std::ctype_base::mask> rc(table_size, std::ctype_base::mask());
rc[','] = std::ctype_base::space;
rc['\n'] = std::ctype_base::space;
rc[' '] = std::ctype_base::space;
return &rc[0];
}
};
Чтобы использовать это, вы imbue()
поток с локалием, который включает этот грань. Как только вы это сделаете, вы можете читать цифры, как будто запятые не были там вообще. Например, мы будем считывать номера с разделителями-запятыми из ввода и записывать затем одну строку на стандартный вывод:
#include <algorithm>
#include <iterator>
#include <iostream>
int main() {
std::cin.imbue(std::locale(std::locale(), new csv_reader()));
std::copy(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::ostream_iterator<int>(std::cout, "\n"));
return 0;
}
Я не уверен, что вы можете сделать это с помощью Kubernetes NetworkPolicy, но вы можете добиться этого с помощью модулей с поддержкой Istio.
Примечание. Сначала убедитесь, что Istio установлен на вашем кластере. Для установки см. .
См. Цитату из документации Istio о выходном трафике .
По умолчанию службы с поддержкой Istio не могут получить доступ к URL-адресам за пределами кластера, потому что модуль использует iptables для прозрачного перенаправления всего исходящего трафика на прокси-сервер дополнительной системы, который обрабатывает только внутрикластерные адреса. blockquote>
Кроме того, вы можете добавить в белый список домены вне кластера, добавив
ServiceEntry
иVirtualService
к вашему кластеру, например в Настройка внешних служб в документации Istio.Я надеюсь, что это может быть полезно для вас.