Windows ma system zmiennych środowiskowych. Tu uniwersalne stringi którym przypisana jest jakaś wartość. Można się do nich odnieść praktycznie wszędzie. Więc jak wpiszesz w cmd "echo %zmienna%" to wypisze Ci ta zmienną. Zmienną set ustawiasz zmienną dla sesji, a setx globalnie.
W C++ do odczytywanie zmiennych środowiskowych służy funkcja z C - getenv z cstdlib.
Więc
#include <iostream>
#include <cstdlib>
int main(){
char* user_home = getenv("userprofile");
if(!user_home){
std:cerr<<"Something went wrong.";
return 1;
}
std::cout<<user_home;
return 0;
}
powinno Ci wypluć to co wypluje Ci "echo %userprofile%"