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?

Заранее спасибо :)

Ответы на вопрос(2)

Ваш ответ на вопрос