CString mittels c_str() als Pointer übergeben?

Cappaja

Erfahrenes Mitglied
hallo,

ich habe folgendes Problem das ich einen CString, gewonnen aus dem Dateinamen eines CFileDialogs mittels GetFileName(), als char* überführen möchte. die funktion c_str() sollte dazu in der lage sein, allerdings kann ich diese nicht ordnungsgemäß ausführen. Hat jemand eine Idee wie ich das machen könnte? mein problem ist derzeit, dass beim punkt-operator keine auswahlliste der möglichen befehle angezeigt wird, auch nicht mit STRG + LEER :(

Code:
	int  mats;
	char mesg[MSG_LEN_S];
	char *MatName;

	if(!oup_ing)
    {
		if(OpenWaveOutputDevice(GetSafeHwnd()))
        {
			MatName = NULL;
			CFileDialog loadFile(TRUE, NULL, NULL, NULL, "Mat Files(*.mat)|*.MAT|Wav Files (*.wav|*.WAV||");

			if(loadFile.DoModal() == IDOK)
			{
				MatName = loadFile.GetFileName().c_str();
				mats = MatFiletopRecBuf(MatName);
				if(mats != 0)
				{
                               ...........
 
Zuletzt bearbeitet:
Hallo Cappaja,

c_str() ist eine Methode der STL-Klasse string. Das in MFC verwendete CString gehört zur ATL und ist etwas komplett anderes. Eine CString-Instanz kann man laut Dokumentation einfach in einen LPCTSTR casten (was einem nullterminierten C-String entspricht).

Grüße, Matthias
 

Cappaja

Erfahrenes Mitglied
Hallo Matthias,

danke erstmal, der Ansatz ging auf jedenfall in die richtige Richtung. LPCTSTR liefert ein const char*, ich benötige allerdings nur ein char*. Habe aus den MSDN noch die Methode GetBuffer(int nMinBufLength) gefunden. Jetzt funktioniert es! Aber nochmals danke, den LPCTSTR-Cast kann ich sicher noch woanders gebrauchen ;)

Code:
CString s;
s = loadFile.GetFileName();
MatName = s.GetBuffer(255);

gruß cappaja
 
Zuletzt bearbeitet: