C++ Von Typenumwandlungen und LPCSTRs

Hallo,

Ich habe zwei Fragen. Probleme sind es nicht, denn lösen kann ich sie von einem gewissen standpunkt aus.

1. Typenumwandlung
Es gibt ja mehre Möglichkeiten, in C++ eine Typenumwandlung vorzunehmen, gerade bei String-Objekten.

Ich habe mir zwei kleine Funktionen geschrieben:
Code:
// Convert Int to string 
std::string intstr(int i)
{
	std::stringstream sstr;
	sstr << i;
	std::string myString = sstr.str();
	return myString;
}

// Convert String to int
int strint(std::string str)
{
	int i;
	std::stringstream sstr(str);
	sstr >> i;
	return i;
}

Macht dieses Vorgehen Sinn?


2. API Calls die LPCSTRs erwarten:

Stringobjekte und stringstream objekte sind anscheinend nicht mit LPCStr Parametern verträglich. Um eine msgbox auszugeben, die eine Variable als Text hat, muss ich also folgendermassen vorghen:

Code:
	std::string str;
	LPCSTR LPstr_msg;

	for(int i=0;i<20;i=i+1)
	{
		//graphics.DrawLine(&pen, 10 + (i * 10), 10, 200, 100);

		str = intstr(i);

		/* convert string to LPSTR */
		LPstr_msg = str.c_str();

		/* show msgbox */
		MessageBox(
			NULL,
			LPstr_msg,
			"DebugBox",
			MB_OK 
		);

	}

Ist das der "Way-to-Go" oder macht man das eleganter?


Mein Code funktioniert soweit, aber evtl ist es ja viel zu kompliziert...

Danke für etwaige Erklährungsversuche :)
 
Den 2. Punt würde ich als korrekt ansehen.

Beim 1.Punkt bin ich mir nicht ganz so sicher wie Strings unter C++ (STL) gehandhabt werden. Wird in der Funktion strint() eine lokale Variable am Stack zurückgegeben?
Und bei strint() wird hier eine Referenz übergeben? Ich nutze eigentlich immer "normale" C-Strings also char *.
 
Ich habe eben gelesen, dass es klüger sein auf die std Lib zurückzugreifen, auch im Bezug auf Bufferoverflows. Was wird denn aktuell so an Hochschulen als "standard" angesehen?

(ICh möchte mir ungern was falsches angewöhnen ;) )

Was die Umwandlungsfunktionen angeht, da wäre es wohl wirklich klüger, diese als ref bez. als Pointer, zu übergeben. Ist dann wohl bedeuntend schneller.


Danke für deine Antwort. ;)
 
Die STL kann ja noch viel mehr als Strings, alle möglichen Datenstrukturen sind enthalten. Lohnt sich sicher wenn man C++ entwickelt, aber man merkt halt gleich was C++ für Grausamkeiten drauf hat...
 
Zurück
Oben