String in CString umwandeln
- 
					
					
					
					
 Hallo Leute, ich stehe gerade vor dem Problem, einen CString(MFC) in einen String(STL) umzuwandeln. Bekomme es aber nicht hin. Diese Methode funktioniert nicht: std::string a; CString b; b = "test"; // CString -> std::string a = LPCTSTR( b );Könnt ihr mir helfen? Danke im Voraus. Grüsse 
 xthing
 
- 
					
					
					
					
 Wie äußert sich dieses "funktioniert nicht"? (wenn du mit UNICODE arbeitest, ist CString ein wchar_t-String - d.h. du benötigst auch die wchar_t-Version von std::string als Ziel (die nennt sich std::wstring)) 
 
- 
					
					
					
					
 Die Fehlermeldung lautet: 
 error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'LPCTSTR' akzeptiert (oder keine geeignete Konvertierung möglich)Grüsse 
 xthing
 
- 
					
					
					
					
 Dann geh mal deine Projekteinstellungen durch - ist das Makro "UNICODE" irgendwo definiert? (und lass dir mal anzeigen, wie der Datentyp LPCTSTR definiert ist) 
 
- 
					
					
					
					
 Der ist so definiert: typedef LPCWSTR PCTSTR, LPCTSTR; Wo muss denn das Makro UNICODE definiert sein. Unter Projekte / Eigenschaften /? Danke noch mal. Grüsse 
 xthing
 
- 
					
					
					
					
 xthing schrieb: Der ist so definiert: typedef LPCWSTR PCTSTR, LPCTSTR; Ja, das deutet auf UNICODE hin - d.h. du müsstest auf STL-Seite mit wstring arbeiten. Wo muss denn das Makro UNICODE definiert sein. Unter Projekte / Eigenschaften /? Projekte -> Eigenschaften -> C/C++ in der Kategorie "Präprozessor" 
 
- 
					
					
					
					
 Danke, mit wstring klappt es ,mit LPCTSTR(cstring), allerdings erwartet die Funktion, die ich verwenden muss einen einfachen string. Wie kann wstring denn string wandeln? Danke noch mal. Grüsse 
 xthing
 
- 
					
					
					
					
 Da fällt mir auf Anhieb nur ein Ansatz ein - narrow(): wstring src=...; ctype<wchar_t> converter;//wenn das nicht geht, hol dir die Facette von cin string tgt; for(int i=0;i<src.length();++i) tgt.push_back(converter.narrow(src[i],' ');(oder du löschst die Definition UNICODE aus deinen Projekteinstellungen)