POW уже имеет хороший ответ, если вам нужен результат в виде новой строки. Этот ответ заключается в том, как обрабатывать его, если вы хотите обновить на месте.
Первая часть рецепта - std::remove_if
, которая может эффективно удалить пунктуацию, упаковывая все знаки без пунктуации по мере их появления .
std::remove_if (text.begin (), text.end (), ispunct)
К сожалению, std::remove_if
не сжимает строку до нового размера. Это невозможно, потому что у него нет доступа к самому контейнеру. Поэтому в результате после упакованного результата есть символы нежелательной почты.
Чтобы обработать это, std::remove_if
возвращает итератор, который указывает часть строки, которая по-прежнему необходима. Это можно использовать со строками erase
методом, приводящим к следующей идиоме ...
text.erase (std::remove_if (text.begin (), text.end (), ispunct), text.end ());
Я называю это идиомой, потому что это обычная техника, которая работает во многих ситуациях. Другие типы, кроме string
, предоставляют подходящие методы erase
и std::remove
(и, возможно, некоторые другие функции библиотеки алгоритмов, которые я забыл на данный момент) используют этот подход для закрытия пробелов для элементов, которые они удаляют, изменение размера для вызывающего абонента.
Я нашел здесь 2 проблемы:
1-й: Недостаточно разоблачить порт. expose
это просто документация, вам нужно publish
(привязать) порт к хосту, чтобы он был доступен. Вот как это делается:
ports:
- 1234:1234
2-й: необходимо настроить adminmongo
для прослушивания 0.0.0.0
, потому что по умолчанию он начинает прослушивать 127.0.0.1
, и это делает его доступно только внутри самого контейнера. На странице документации , которую вы включили в свой вопрос, в разделе Конфигурация говорится, что это можно сделать, передав переменную окружения:
Все выше параметры могут использоваться в среде, что делает его очень удобным при использовании adminMongo в качестве док-контейнера! просто запустите
blockquote>docker run -e HOST=yourchoice -e PORT=1234 ...
Поскольку вы используете
docker-compose
, это делается следующим образом:environment: - HOST=0.0.0.0
Рабочий пример: [1116 ]
version: '3' services: mongo: image: mongo volumes: - ~/data:/data/db restart: always expose: - 6016 adminmongo: image: mrvautin/adminmongo ports: - 1234:1234 environment: - HOST=0.0.0.0
Вы должны открыть свой сервис для внешнего мира следующим образом:
version: '3'
services:
mongo:
image: mongo
volumes:
- ~/data:/data/db
restart: always
adminmongo:
image: mrvautin/adminmongo
ports:
- 1234:1234
Теперь вы можете получить доступ к своему adminmongo по http: // localhost: 1234 .
И вам не нужно использовать ссылки здесь. Так как compose создает сеть и объединяет все сервисы в файлах compose. Вы можете получить доступ к другим контейнерам с их сервисными именами.