Wie kann ich LPTSTR mit char* vergleichen? (c++)

Also folgendes:

Ich will in einem Programm (c++) den Wert eines Registry-Eintrags auslesen und anschließend mit einer Zeichenkette bzw Integer vergleichen.

Das sieht jetzt ungefähr folgendermaßen aus:

Code:
RegOpenKeyEx(KEY,(LPCTSTR)place2,0, KEY_ALL_ACCESS,&hkey);
RegQueryValueEx(hkey, "Number", 0, &dwType,(LPBYTE)lpValue,&dwSize);
if(strcmp(lpValue,"4")==0){ ... }


Ich bedanke mich schon mal im vorhinein für eure Antworten.

Greetz Paladin
 
Hmm versuchs mal mit Casten,so:
Code:
LPTSTR bla;
//[bla füllen]
char zeichen;
zeichen = (char)bla

Bin mir nicht sicher^^

Xalon
 
wenn ich mich recht erinnere ist doch ein LPTSTR nichts anderes als ein char* oder?

strings kannst du mit strcmp vergleichen. wenn du ein string mit einem integer vergleichst, musst du zuerst mit atoi() aus dem string einen integer machen:
Code:
#include <windows.h>
#include <iostream>

int main()
{
	LPTSTR var1 = "Hallo Welt!";
	char*  var2 = "Hallo Welt!";

	//Die Strings vergleichen:
	if(!strcmp(var1, var2))
		std::cout << "Die Strings sind gleich!" << std::endl;

	LPTSTR var3 = "4";
	int var4 = 4;

	//Den String mit einem Integer vergleichen
	if(atoi(var3) == var4)
		std::cout << "String und int sind gleich!" << std::endl;

	return 0;
}
 
Original von Xalon
Hmm versuchs mal mit Casten,so:
Code:
LPTSTR bla;
//[bla füllen]
char zeichen;
zeichen = (char)bla

Bin mir nicht sicher^^
Nein, so eher nicht.

bla ist ein Zeiger auf eine Zeichenkette, du versuchst hier einen 4-Byte langen Zeiger auf ein 1-Byte langen Integraldatentypen zu kürzen - da müsste eigentlich jeder Compiler schon beim compilieren meckern.

Außerdem gilt: Vergleichsoperator in allen C-Verwanden Sprachen ist == und nicht = und vergleiche NIEMALS C-Strings (Char-Arrays, Char-Pointer) mit == sondern grundsätzlich mit strcmp, weil sonst lediglich ein Vergleich von Adressen vorgenommen wird, aber kein inhaltlicher Vergleich. Die Variante von nidda ist also eindeutig zu bevorzugen ;)

Gruß,
sr
 
Zurück
Oben