idiomati c Подход C ++ 14 / C ++ 17 к перечислению переменных среды - PullRequest
0 голосов
/ 12 июля 2020

Вот код для перечисления всех переменных среды.

#include <iostream>
#include <cstdlib>

int main (int argc, char *argv[], char *envp[]) {

      char **p = nullptr;

      p = envp;

      while (*p) {
            std::cout << *p << std::endl;
            p++;
      }

return 0;
}

Я упоминал более раннюю публикацию о печати всех переменных среды в C / C ++ . Однако он не отвечает на мой запрос.

Как написать приведенный выше код на идиоматическом языке c C ++ 14 / C ++ 17? Любые указатели?

обновить 1 исправленный код (сообщение с предложением Alex)

ПРИМЕЧАНИЕ: это будет not , поскольку envp не является контейнером.

#include <iostream>

int main (int argc, char *argv[], char *envp[]) {

      for (auto it = std::begin(envp); it != std::end(envp); ++it) {

            std::cout << *it << std::endl;
      }


return 0;
}


1 Ответ

1 голос
/ 14 июля 2020

Нет другого способа перечислить переменные среды, кроме тех, которые указаны в вашем вопросе или связанных ответах. Причина в том, что интерфейс к переменным среды определен таким образом, что код C может получить к ним доступ, поэтому вы должны делать это «способом C» даже в C ++. C ++ не определяет свой собственный способ доступа к переменным среды.

...