wchar vergleichen mit einem String
-
Hallo leute,
ich habe eine Funktion m_device_info.szName, welches einen Datentyp von wchar besitzt.
Ich wollte es es via if statement mit einen String vergleichen, aber leider erkennt es mir den Operator nicht:
if ( m_device_info.szName == "TEST"){
system("shutdown -l");
}Der Fehler liegt bei dem Vergleichsoperator.
Würde mich über hilfe sehr freuen.
MfG
-
CPPnoob234 schrieb:
Der Fehler liegt bei dem Vergleichsoperator.
Woher weißt Du das?
-
Fehlermeldung? Bitte cpp-tags verwenden. Funktionen haben keinen Typ. "m_device_info.szName" hört sich eher nach einer Variablen an. wchar ist kein bekannter Datentyp.
Also bitte etwas genauer
.
-
Der Compiler Visual Studio 2010 makiert mir den Vergleichsoperator == rot ein.
Ich kriege die Fehlermeldung, dass die Operandentypen inkompatibel ("wchar" und "const char") sind zueinander.
-
Mein m_device_info ist wie folgt deklariert dabei.
BLUETOOTH_DEVICE_INFO m_device_info = { sizeof(BLUETOOTH_DEVICE_INFO), 0, };
-
1. Entweder Characterset auf MBCS umstellen (momentan ist es auf UNICODE eingestellt) oder den generischen Weg über _T("") (include <tchar.h> nötig).
2. C-Strings können nicht mit == verglichen werden, dazu sind strcmp(..) und Konsorten da. Bei Dir würde sich _tcscmp(..) anbieten (generische Variante).
Siehe hier: http://msdn.microsoft.com/en-us/library/e0z9k731.aspxHier komplett:
#include <tchar.h> void f() { BLUETOOTH_DEVICE_INFO m_device_info = { sizeof(BLUETOOTH_DEVICE_INFO), 0, }; // .. if (_tcscmp(m_device_info.szName, _T("TEST")) == 0) { // .. } }
Edit:
Nach der Korrektur von Punkt 1 (Characterset) können die C-Strings zwar technisch mit == verglichen werden, es macht aber (vermutlich) nicht das, was Du erwartest.Edit2:
Hier kannst Du übrigens noch ein wenig mehr über das Problem nachlesen:
http://www.c-plusplus.net/forum/276277
-
Hallo Theta,
vielen Dank für die Antwort. Es war schon eine große hilfe.
Nun habe ich ein Logik Fehler vielleicht kannst du mir dabei behilflich sein.
Möchte eigentlich nur, wenn ein bestimmter Name nicht mehr vorhanden ist, dass es die IF-Bedingung ausführt.
Ich habe beim Debuggin festgestellt, dass die Bedingung immer erfüllt ist.if ( _tcscmp(m_device_info.szName,_T("TEST")) !=0 ){ cout<<"Shutdown"<<endl; }
letzlich steht ja 0 für identisch und ist dann !=0 überhaupt möglich ?
schöne Grüße
-
letzlich steht ja 0 für identisch und ist dann !=0 überhaupt möglich ?
Ja.