C ++ странное поведение с функцией c_str () строки
Я перевожу свой проект из Visual Studio 06 в 2010 г. При этом я наблюдал такое поведение в своем коде. У меня есть функция Get string, которая выглядит следующим образом:
string GetTheStr()
{
return strSomeStdString;
}
Затем есть еще одна функция, которая вызывает выше, получить функцию, как это:
const char* ptrStr = (char *)GetTheStr().c_str();
значение строки, на которую указывает ptrStr, равно ""
Код выше работал нормально в Visual Studio 06, но не в Visual Studio 2010.
Тогда я попробовал несколько экспериментов:
std::string str = GetTheStr(); // -> value inside str displayed correctly
const char* PtrCStr = str.c_str(); // -> value pointed by PtrCStr displayed correctly
const char* PtrData = str.data(); // -> value pointed by PtrData displayed correctly
const char* ptr = (char *)GetTheStr().c_str(); // -> value pointed by ptr NOT displayed correctly
Мне интересно, почему последняя строка не сработала. Может кто-нибудь сказать мне, почему вышеуказанное поведение происходит в Visual Studio 2010, но не в Visual Studio 06?
Заранее спасибо :)