Zeiger auf Text
-
Hallo,
ich habe eine Methode bei der ich einen Pointer auf einen Text übergeben muss in Form eines WCHAR. Aus meinem C++ Buch werde ich hier leider auch nicht schlau
std::string new_text = "..."; std::string* pnew_text = &new_text; //C++ Buch... methode(new_text); //Error: error C2440: 'Initialisierung': 'std::string *' kann nicht in 'const wchar_t' konvertiert werden
Dann ist ja pnew_text ein Zeiger auf meinen new_text. Aber wie kann ich den nun an die Methode übergeben?
lg nooby
-
Dein Text und die Fehlermeldung widersprechen sich. Zuerst zu deinem Text: Du suchst einen Wide String, also einen std::basic_string<wchar_t> oder kurz std::wstring (genauso wie std::string nur ein kürzerer Name für std::basic_string<char> ist). Mit diesem std::wstring kannst du nun arbeiten, wie du es von std::string gewohnt bist, d. h. wenn ein const wchar_t* benötigt wird, kannst du die Funktion std::wstring::c_str() verwenden. Du musst nur bei allem, was du machst, beachten, dass es sich nicht mehr um char handelt, also:
wstring foo = L"Hallo Welt"; wcout << foo; wchar_t firstLetter = foo[0]; usw.
Allerdings sagt die Fehlermeldung, dass nur ein einzelnes Zeichen als const wchar_t (ohne Zeiger) gefordert ist.
-
Ich reime mir aus Deinem Text folgendes zusammen:
void methode(const wchar_t*); // Deklaration
wobei Du beim Abtippen der Fehlermeldung
error C2440: 'Initialisierung': 'std::string *' kann nicht in 'const wchar_t' konvertiert werden
ein Sternchen hinter wchar_t vergessen hast.
Da wchar_t nicht Referenz-kompatibel zu std::string ist, kannst Du auch einen Zeiger des Typs string* nicht nach wchar_t* konvertieren. Wenn du ein einem const char* interessiert gewesen wärst, hätte man Dich auf die Elementfunktion c_str von std::string aufmerksam machen können. std::string speichert die Zeichenkette nämlich als char-Array. Entweder Du nimmst gleich std::wstring (w für wide) oder Du konvertierst das vorher irgendwie.
Als VC++ User solltest Du Dich wahrscheinlich auch mit TCHAR auseinander gesetzt haben. Falls das noch nicht passiert ist, hole unbedingt das nach.
-
Super Danke!
Die Methode die ich verwende ist eine SetText Methode. Nun kann ich zwar einen einzelnen Buchstaben einsetzen, doch wie kann ich weitere Buchstaben adden?
So wird ein Buchstabe geschrieben und es erscheint ein Rechteck dahinter...
@1729: Eigentlich habe ich Copy Paste gemacht...also dürfte ich nichts an der Nachricht verändert haben.
-
Wenn Du Hilfe haben möchtest, musst Du schon mehr vom Problem verraten. ZB könntest Du erklären, woher das std::string Objekt kommt, wie de Deklaration der Funktion aussieht, die du aufrufen willst, und was da eigentlich passieren soll.
-
Ich möchte einfach nur einen Text eines TextBlocks einer XAML Datei ändern:
IXRTextBlockPtr->SetText(WCHAR* Text)
Wie kann ich da nun einen normalen string übergeben (und nicht nur einzelne Buchstaben)?