Rückkehr habe ich den nächsten Code:Zwei verschiedene behaveiors wenn ein int oder string.c_str() aus einer Funktion CPP
const char* justReturn()
{
std::string s = "rstring";
return s.c_str();
}
int justReturnI()
{
int x = 5;
return x;
}
int main()
{
const char* result = justReturn();
int result2 = justReturnI();
std::cout << result <<std::endl;
std::cout << result2;
std::cin.get();
return(0);
}
Der Ausgang der ersten Funktion eill eine seltsame Zeichenfolge sein, während die zweite wird gibt mir '5'.
Warum seltsame Zeichen ausgedruckt? Ich habe die Zeichenfolge nicht zurückgegeben, die kurz nach dem Ende des Bereichs gestorben ist. Ich habe einen neuen Const Char zurückgegeben.
Aber der Zeiger zeigt auf den toten String. –
[undefiniert Verhalten?] (Http://coliru.stacked-crooked.com/a/c6e6c3496e689c92) –
http://en.cppreference.com/w/cpp/string/basic_string/c_str - * Rückgabewert: Zeiger auf der zugrunde liegende Zeichenspeicher. * – chris