Tekst zwracany przez funkcję to bzdury, mimo iż w funkcji wszystko ok.

Odpowiedz Nowy wątek
2018-08-24 12:44
0

Witam.

Od pewnego czasu staram się rozwiązać kolejny problem. Kod wygląda tak:

const char* GetProgramPath(){
    static char* ProgramPath;
    ProgramPath = getenv("ProgramData");
    //ErrHandler(ProgramPath = getenv("ProgramData"), "GetProgramPath", "Cannot obtain ProgramData local variable.", true);
    std::string path = ProgramPath;
    path += "\\Positive\\";
    std::cout<<"\n"<<path;
    return path.c_str();
}

int main(){
    std::string ret = GetProgramPath();
    std::cout<<ret;
}

Tak wyglądają outputy:

Output's

Pierwsza część D:\ProgramData\NazwaProjektu, to to co jest wypisywane przez GetProgramPath(). Kolejna część, te krzaczki, to to co mam w mainie.
Nie wiem o co może chodzić, ogłupiałem już.

Prosiłbym o pomoc.

Saludos.


"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
edytowany 1x, ostatnio: PrezesiQ, 2018-08-24 12:44

Pozostało 580 znaków

2018-08-24 12:55
4

Zmienna std::string path jest niszczona po wyjściu z funkcji a więc zwracany wskaźnik do łańcucha traci ważność. Zwróć z funkcji wartość typu string a nie wskaźnik do łańcucha.

std::string GetProgramPath(){
    ...
    return path;
}
No tak.. Głupi błąd. Dziękuję za pomoc. - PrezesiQ 2018-08-24 13:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0