ciao.
ho la seguente classe:

.h
codice:
class CShaderProgram
{
public:
	CShaderProgram();
	~CShaderProgram(void);
	
	bool compileShaderFromName( const std::string & strShaderName, GLSLShader::GLSLShaderType type );
	char* m_strProgramName;
private:
	const char* loadShaderAsString(const char* file);
	void printActiveUniforms();
	void printActiveAttribs();
	int  m_handle;//handle del programma compilato
};
.cpp
codice:
#include "StdAfx.h"
#include "ShaderProgram.h"
#include "Resources.h"
#include <iostream>
#include <fstream>
CShaderProgram::CShaderProgram()
{
}

CShaderProgram::~CShaderProgram(void)
{
}

const char* CShaderProgram::loadShaderAsString(const char* file){
    
	std::ifstream shader_file(file, std::ifstream::in);
    std::string str((std::istreambuf_iterator<char>(shader_file)), std::istreambuf_iterator<char>());
 
    return str.c_str(); //ATTENZIONE PROBLEMA
}

bool CShaderProgram::compileShaderFromName( const string & strShaderName, GLSLShader::GLSLShaderType type )
{
	const char* strSource = loadShaderAsString("C:\\OpenResources\\Shaders\\basic.vert");
//non riportato perchè non importante
quando richiamo dall esterno :
codice:
CShaderProgram program;
program.compileShaderFromName("basic.vert", GLSLShader::VERTEX);
in:
//ATTENZIONE PROBLEMA
qui :return str.c_str(); col debug vedo che la stringa è caricata correttamente con il contenuto di
C:\\OpenResources\\Shaders\\basic.vert, ma dopo che ritorna str si svuota e il valore const char ritornato è non valido
[0] -18 'î' const char
[1] -2 'þ' const char
e cosi via per tutto il contenuto.
non riesco a capire il perchè!
grazie.