
Сообщение от
DiffEreD
как загнать данные с системного PATH в string?
Пример первый, правильный (взят с cplusplus.com)
C++ |
1
2
3
4
5
6
7
8
9
10
11
| #include <stdio.h> /* printf */
#include <stdlib.h> /* getenv */
int main ()
{
char* pPath;
pPath = getenv ("PATH");
if (pPath!=NULL)
printf ("The current path is: %s",pPath);
return 0;
} |
|
Пример второй, неправильный - можно воспользоваться перегруженной (
в несоответствии со стандартом) версией функции main, которая 3им параметром принимает массив указателей на environment variables. Такая версия мэйна есть не во всех компиляторах.
Вот пример состряпал, проверял в 12ой студии
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <iostream>
#include <string>
std::string getPath (char **env)
{
while (*env) {
std::string env_val(*env);
if (env_val.find("PATH") == 0) {
return env_val;
}
++env;
}
return "PATH not found";
}
int main(int argc, char **argv, char **env)
{
std::cout << getPath(env) << std::endl;
} |
|