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

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.

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;
}

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