Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char in std::string

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
15.03.2007, 21:06 Uhr
Suba Esel



Ich hab einen int - Wert (i), den ich mit GetAsyncKeyState bekomme.

Folgende Frage:


C++:
switch(key)
{
     // Behandlung
     default:
     if(i >= 65 && i <= 90)
     {
          std::string temp;
          temp = char(i);
          return temp;
     }
}



Das funktioniert, folgendes nicht:
std::string temp = char(i);

Warum?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.03.2007, 21:23 Uhr
xXx
Devil


cpp? aber keinen C++ cast ... und eine lokale Variable retunieren? naja ...

C++:
if(i >= 65 && i <= 90)
{
    std::string temp(1, static_cast<char>(i));
    return temp;
}
...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.03.2007, 21:28 Uhr
Suba Esel



retunieren?
Und ja, ist C++
Alles, was ich will, ist folgendes: GetAsyncKeyState gibt, wenn ein Buchstabe gedrückt wird, dessen ASCII - Wert zurück. Und diesen ASCII - Wert möchte ich als Zeichen zurückgeben. Das erste funktioniert wie gesagt, das zweite nicht. Das wundert mich.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.03.2007, 21:30 Uhr
xXx
Devil


hmm ... warum initialisierst du nicht direkt per konstruktor?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.03.2007, 21:34 Uhr
Suba Esel




wie meinst du das
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.03.2007, 21:36 Uhr
Blubber2063



Wenn du eh nur nen Buchstaben hast, dann return doch nen char.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.03.2007, 21:40 Uhr
Suba Esel



nee, ich hab auch ne Behandlung für zum Beispiel Enter, da wird "Enter" zurückgegeben. Meine Frage ist eigentlich hauptsächlich, woran das liegt, dass das in einer Zeile ne Fehlermeldung gibt von wegen "invalid conversion from 'char' to 'const char*'" und in zweien nicht....
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.03.2007, 21:59 Uhr
xXx
Devil



Zitat:
wie meinst du das
So wie ich das in dem Code in Post 001 gemacht hab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.03.2007, 22:10 Uhr
Suba Esel



Wieso kann ich denn nicht einfach schreiben "std::string temp = char(i);"? Das versteh ich ja grade nicht, wie gesagt, wenn ich das in zwei Zeilen schreib funktioniert alles tadellos, so bekomm ich ne Fehlermeldung....
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
15.03.2007, 22:35 Uhr
ao

(Operator)



Zitat von Suba Esel:
Wieso kann ich denn nicht einfach schreiben "std::string temp = char(i);"? Das versteh ich ja grade nicht, wie gesagt, wenn ich das in zwei Zeilen schreib funktioniert alles tadellos, so bekomm ich ne Fehlermeldung....

Der Einzeiler ist eine Deklaration mit Initialisierung, die diese Konstruktor-Überladung verlangt:

C++:
std::string (char);

die es aber nicht gibt, was den Compiler zu einer Fehlermeldung veranlasst. Vgl. hier: www.cppreference.com/cppstring/string_constructors.html.

Der Zweizeiler ist eine Deklaration mit Default-Initialisierung (den Konstruktor hierfür gibts natürlich) und eine Zuweisung. Die erfordert diese Überladung von operator=:

C++:
string & operator= (char);

und so eine Überladung ist vorhanden, und der Compiler ist zufrieden. Siehe hier: www.cppreference.com/cppstring/string_operators.html.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: