Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktion: String zu Ascii

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 <
000
24.04.2007, 19:27 Uhr
~phi
Gast


Hi,
ich habe folgende Funktionen:

Code:
  double makeAscii)
  {
    string Source = "tester";  
    string returnValueString;
    string tmpString;
    int tmpInt;
    for(int i=0;i<Source.length();i++) {
      tmpString = Source[i];
      tmpString = (char) asc(tmpString);
      returnValueString = returnValueString + tmpString;
    }
    stringstream Str;
    Str << returnValueString;
    double d;
    Str >> d;
    return d;
  }
...
  int asc(string Source)
  {
    //Transform the first letter of a string to ASCII
    int nASCII = (int)Source[0];  
    return nASCII;
  }


Bei der Funktion makeAscii erhalte ich jedoch nicht etwa die Ascii-Zeichenfolge von "tester" sondern als Rückgabewert einen rießigen Wert.
1) Vermutlich hab ich da was falsch gemacht, hat jemand eine Idee?
2) Gibt es noch eine andere Möglichkeit eine Zeichenfolge in ASCII-Code zu wandeln?

Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.04.2007, 19:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was genau willst du denn machen. Die Asciiwerte hintereinander in einen String klatschen?

Das ist relativ sinnfrei.. mit c_str() erhälst du einen const* char von deinem string und wenn du die Asciiwerte ausgeben willst brauchst du einfach nur ein cout auf dem jeweilgen [index] aufrufen. Soll es nicht der buchstabe sondern der asciiwert sein hilft z.B. ein cast..
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.04.2007, 19:57 Uhr
~phi
Gast


Hi,
danke für die Antowort! Ich wandle eine Zeichenkette in ASCII-Codes um, um diese als return-Wert einer DLL zurückzugeben (leider ist es nicht möglich string als Rückgabewert einer Funktion, bei DLL zu verwenden). Ich will also nicht die Zeichenkette "tester" zurückgeben, sondern deren ASCII-Code 116 101 115... in einer double-Variable.
Irgend eine Idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.04.2007, 20:13 Uhr
BoBtheREapER
kein job für nen BoB


wieso zur hölle als double? geht nicht auch int oder so? aber egal. hier mal das ganze als nen int array. in nen double kannst es ja wenn du möchtest auch noch umwandeln.

C++:
std::string text;
char *ctext;
int *ia;
ia = (int*) malloc(sizeof(int*text.length());
ctext = text.c_str();
for( int i = 0; i < text.length(); i++)
  ia[i] =(int*) ctext[i];
return ia;


EDIT: ich habs nicht getestet und bitte keine haue wenn das unschön ist
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu

Dieser Post wurde am 24.04.2007 um 20:14 Uhr von BoBtheREapER editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.04.2007, 21:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
ALSO:

in einer DLL die du dynamisch lädst (mit LoadLibrary, GetProcAddress) kannst du nur mit großen Verenkungen C++-"Extensions" verwenden, ich denke mal du benutzt export "C" o.ä um die funktionen als C-Schnittstelle auszuweisen. In dem Fall kannst du eben string usw nicht direkt übergeben/zurückliefern.

Wenn du die DLL statisch an deine Anwendung bindest (also die dllexport-lib mit in deine anwendung bindest) kannst du sehr wohl STL-Typen auch in den Funktionsdeklarationen verwenden.

Was ich dir nur sinnvollerweise sagen will ist außerdem noch:

char * zurückliefern ist gefährlich wenn du z.b einfach nur den Pointer einer lokalen Variable zurücklieferst, der ist nach der Funktion nicht mehr gültig! Sinnvoller ist da den Speicher sich geben zu lassen:


C++:
const char *function(char *ziel, unsigned int length)
{
   // ...
   return ziel;
}



so muss der Aufrufer sich um den Speicher kümmern und du hast keine Probleme.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: